目錄:
(1)引入jar包;
(2)json的構造;
(3)json的解析;
(4)遍歷未知key。
(1)java對json的處理,可借助org.json.jar.
org.json
json
20090211
(2)json的構造
//construct json and output it
public String constructJson() throws JSONException {
JSONObject map1 = new JSONObject();
map1.put("name", "張三");
map1.put("password", "123");
System.out.println("map1 --->" + map1);
JSONObject map2 = new JSONObject();
map2.put("name", "李四");
map2.put("password", "456");
System.out.println("map2 --->" + map2);
JSONArray list = new JSONArray();
list.put(map1);
list.put(map2);
System.out.println("jsonMembers --->" + list);
JSONObject json=new JSONObject();
json.put("users", list);
System.out.println("json --->" + json);
return json.toString();
}
public static void main(String args[]) throws Exception{
RoomTool rt = new RoomTool();
rt.constructJson();
}
輸出如下:
map1 --->{"password":"123","name":"張三"}
map2 --->{"password":"456","name":"李四"}
jsonMembers --->[{"password":"123","name":"張三"},{"password":"456","name":"李四"}]
json --->{"users":[{"password":"123","name":"張三"},{"password":"456","name":"李四"}]}
(3)json的解析
//construct json from String and resolve it.
public String jsonTest2() throws JSONException{
String jsonString=jsonTest();
JSONObject json= new JSONObject(jsonString);
JSONArray jsonArray=json.getJSONArray("users");
String loginNames="loginname list:";
for(int i=0;i
JSONObject user=(JSONObject) jsonArray.get(i);
String userName=(String) user.get("loginname");
if(i==jsonArray.length()-1){
loginNames+=userName;
}else{
loginNames+=userName+",";
}
}
System.out.println("loginNames --->" + loginNames);
return loginNames;
}
public static void main(String args[]) throws Exception{
RoomTool tool = new RoomTool();
tool.jsonTest2();
}
輸出如下:loginNames --->loginname list:zhangfan,zf
(4)遍歷未知key
public void parseJson(String jsonString) throws JSONException{
JSONObject json= new JSONObject(jsonString);
Iterator it = json.keys();
while(it.hasNext()){
String key = it.next().toString();
int values = Integer.parseInt((String)json.get(key));
System.out.println(key + "--->" + values);
}
}
public static void main(String args[]) throws Exception{
RoomTool tool = new RoomTool();
tool.parseJson("{\"1\":\"0\",\"2\":\"30\",\"3\":\"15\",\"4\":\"15\",\"5\":\"20\",\"6\":\"20\"}");
}
輸出:
1--->0
2--->30
3--->15
4--->15
5--->20
6--->20
一.Json對象與Json字符串的轉化
1.jQuery插件支持的轉換方式:
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字符串轉換成json對象
2.瀏覽器支持的轉換方式(Firefox,chrome,opera,safari,ie9,ie8)等瀏覽器:
JSON.stringify(obj)將JSON轉為字符串。JSON.parse(string)將字符串轉為JSON格式;
var a={"name":"tom","sex":"男","age":"24"};
var b='{"name":"Mike","sex":"女","age":"29"}';
var aToStr=JSON.stringify(a);
var bToObj=JSON.parse(b);
alert(typeof(aToStr));? //string
alert(typeof(bToObj));//object
3.Javascript支持的轉換方式:
eval('(' + jsonstr + ')'); //可以將json字符串轉換成json對象,注意需要在json字符外包裹一對小括號
注:ie8(兼容模式),ie7和ie6也可以使用eval()將字符串轉為JSON對象,但不推薦這些方式,這種方式不安全eval會執行json串中的表達式。
4.JSON官方的轉換方式:
http://www.json.org/提供了一個json.js,這樣ie8(兼容模式),ie7和ie6就可以支持JSON對象以及其stringify()和parse()方法;
可以在https://github.com/douglascrockford/JSON-js上獲取到這個js,一般現在用json2.js。
二、JSON?字符串?與?java?對象的轉換
1. 把java 對象列表轉換為json對象數組,并轉為字符串
JSONArray array =?JSONArray.fromObject(list);
String jsonstr = array.toString();
2. 把java對象轉換成json對象,并轉化為字符串
JSONObject object =?JSONObject.fromObject(user);
Log4jInit.ysulogger.debug(object.toString());
3.把JSON字符串轉換為JAVA 對象數組
JSONArray json = JSONArray.fromObject(userStr);//userStr是json字符串
List users= (List)JSONArray.toCollection(json, User.class);
4.把JSON字符串轉換為JAVA 對象
JSONObject jsonobject = JSONObject.fromObject(jsonStr);
User user= (User)JSONObject.toBean(object,User.class);