import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 根据网址,返回编码方式为utf-8的JSONObject对象
* 注:只适合请求响应为json格式网址
* @param src 来源网址
* @author chitianxiang $22th March, 2012 - 2:44 p.m
*/
static private JSONObject getJsonObj4Utf8(String src) throws Exception {
return getJsonObj(src, "utf-8");
}
/**
* 根据网址,返回JSONObject对象
* 注:只适合请求响应为json格式网址
* @param src 来源网址
* @param code 编码方式
* @author chitianxiang $22th March, 2012 - 2:42 p.m
*/
static private JSONObject getJsonObj(String src, String code) {
InputStreamReader reader = null;
BufferedReader in = null;
try {
URL url = new URL(src);
URLConnection connection = url.openConnection();
connection.setConnectTimeout(1000);
reader = new InputStreamReader(connection.getInputStream(), code);
in = new BufferedReader(reader);
String line = null; //每行内容
int lineFlag = 0; //标记: 判断有没有数据
StringBuffer content = new StringBuffer();
while ((line = in.readLine()) != null) {
content.append(line);
lineFlag++;
}
return lineFlag == 0 ? null : new JSONObject(content.toString());
} catch (SocketTimeoutException e) {
System.out.println("连接超时!!!");
return null;
} catch (JSONException e) {
System.out.println("网站响应不是json格式,无法转化成JSONObject!!!");
return null;
} catch (Exception e) {
System.out.println("连接网址不对或读取流出现异常!!!");
return null;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
System.out.println("关闭流出现异常!!!");
}
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
System.out.println("关闭流出现异常!!!");
}
}
}
}
//简单使用
//小秘书网菜单http://www.xiaomishu.com/shop/postajax/GetDishList.aspx?pageSize=12&typeId=t1&typeSort=A0&resId=C47E19P46723&version=2
//请求ajax网址
StringBuilder sbSrc = new StringBuilder();
sbSrc.append("http://www.xiaomishu.com/shop/postajax/GetDishList.aspx?pageSize=10");
sbSrc.append("&typeId=" + dataId);
sbSrc.append("&typeSort=A0");
String resId = delEndSeparator(sourceUrl, "/");
sbSrc.append("&resId=" + resId.substring(resId.lastIndexOf("/")));
sbSrc.append("&version=2");
//转换成json对象取出菜单
JSONObject jo = getJsonObj4Utf8(sbSrc.toString());
if (jo == null) {
continue;
}
JSONObject menu = jo.getJSONObject("items");
Iterator<String> keys = menu.keys();
while (keys.hasNext()) {
String key = keys.next();
JSONObject goods= menu.getJSONObject(key);
String title = goods.get("title").toString();
String price = goods.get("price").toString();
String[] goodsInfo = new String[] {title, price};
goodsInfoLst.add(goodsInfo);
}
goodsInfoMap.put(goodstype, goodsInfoLst);
/**
* 删除符合规则的结束符
* @param obj 等删除对象
* @param endWith 结束符
* @author chitianxiang $Feb 4th, 2012
*/
static private String delEndSeparator(Object obj, String endWith) {
String tempStr = "";
if (!(obj instanceof String)) {
tempStr = obj.toString();
} else {
tempStr = (String)obj;
}
return tempStr.endsWith(endWith)
? tempStr.substring(0, tempStr.length() - 1)
: tempStr;
}
分享到:
相关推荐
### net.sf.json.JSONObject对象使用指南 #### 简介与背景 随着互联网技术的发展,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代软件开发中的应用越来越广泛。其简洁性和易读性使其成为...
- **类型转换**:`JSONObject`的`getXXX`系列方法可以根据字段类型返回对应的Java值,如`getString()`, `getInt()`, `getBoolean()`等。 - **异常处理**:在转换过程中,可能会遇到JSON格式错误、字段不匹配等问题,...
`JSONObject`是Java中处理JSON的一种常见工具,它允许我们创建、解析和操作JSON对象。在Java中,`JSONObject`是org.json库的一部分,这个库提供了处理JSON的各种功能。 `JSONObject`类是用于表示JSON对象的Java类。...
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。在一次项目中用到页面返回数据处理。JSONObject的引入包
例如,你可能需要将Java对象转换为JsonObject,然后发送到服务器,或者接收服务器返回的JSON数据并解析成Java对象。此外,由于JSON格式的普遍性和轻量级特性,JsonObject也常用于本地数据存储,例如使用...
在Java中,`JSONObject`是JSON-P(Java API for JSON Processing)规范的一个实现,由org.json库提供,它允许开发者将Java对象转换为JSON格式,以及将JSON数据转换回Java对象。 `JSONObject`类是处理JSON对象的核心...
- `new JSONObject(Map map)` 从Map对象中创建一个JSONObject,其中Map的键是字符串,值可以是基本类型或可转化为JSON的对象。 - `JSONObject(string jsonText)` 从JSON格式的字符串创建JSONObject。 2. **添加...
`JSONObject`是`org.json`包中的核心类,它代表了一个JSON对象。一个JSON对象是一个无序的键值对集合,每个键都是一个字符串,每个值可以是多种数据类型,如字符串、数字、布尔值、数组、其他JSON对象等。`...
1. **org.json**:这是一个小型、开源的Java库,提供了JSONObject类,用于创建和操作JSON对象。例如,你可以使用`new JSONObject()`创建一个空的JSONObject,然后通过`put()`方法添加键值对。 2. **com.google.gson...
5. `keys()`:返回JSONObject中所有键的迭代器。 6. `toString()`:将JSONObject转换为JSON格式的字符串。 7. `length()`:返回JSONObject中键的数量。 除此之外,JSONObject还可以与JSONArray相互转换,以及与Java...
JsonObject是Gson库中的一个类,它代表了一个JSON对象。下面是一些基本用法示例: ```java import com.google.gson.JsonObject; // 创建一个空的JsonObject JsonObject jsonObject = new JsonObject(); // 添加...
在web项目中经常会用到json数据(如:struts2处理请求返回json数据给jsp解析),因此,JSONObject对象是必备的,这时就需要引入相关的jar包了。
- `keys`:返回JSONObject中所有键的迭代器。 此外,`net.sf.json.JSONObject`还支持与Java集合框架的互操作性,可以方便地将JSON对象转换为Java的Map,或者从Map创建JSON对象: ```java Map, Object> map = new ...
在Java中,处理JSON数据时,`JSONObject`是常用的一个库,它允许我们方便地进行JSON对象的创建、读取和修改。 `JSONObject`是由org.json项目提供的,它包含了对JSON数据的各种操作方法。这个“JSONObject完整jar包...
例如,可以使用 JSONObject 的 `put` 方法添加键值对,使用 `get` 方法获取指定键的值,`toString` 方法将 JSON 对象转换为字符串,而 `fromObject` 方法则可以从 Java 对象创建 JSON 对象。 在实际开发中,JSON ...
在Java开发中,JSON对象(JSONObject)常用于数据交换,特别是在前后端交互中。当我们序列化或反序列化Java对象为JSON时,有时需要忽略某些属性,以避免不必要的信息暴露或者提高性能。`@JsonIgnore`是Jackson库提供...
在web项目中经常会用到json数据(如:struts2处理请求返回json数据给jsp解析),因此,JSONObject对象是必备的,这时就需要引入相关的jar包了。 json所需要的jar包如下: json-lib-2.4-jdk15.jar json所依赖的jar...
在Java编程中,`JSONObject`是Java JSON库中的一个关键类,用于处理JSON对象。这个压缩包文件"jsonobject的几个依赖jar包.zip"包含了与`JSONObject`相关的依赖库,便于在项目中进行JSON操作。 `JSONObject`是org....
jsp通过Ajax无刷新获取Action返回的模拟数据,然后通过struts2转化成json数据返回页面....这里面Map,List,对象等等,一些常用的操作都有。主要的代码在Action和 json.js里面。适合新手入门