今天看了代碼,發現解析json數據的時候用的是最原始的解析,好久都沒有用這種解析了,都忘的差不多了,現在做個筆記來分享一下json解析的兩種方法
(1)、原始解析方式
(2)、FastJson
一、json的概念:
json是一種輕量級的數據交換格式,服務器傳過來的數據一般都是json數據。可以纔不同平臺上進行數據交換。
json可以將java對象轉成json格式的字符串,也可以講json字符串轉換成java。它比xml更輕量級。
二、json類:
(1)、JsonObject:
可以看作是json對象,是一對(key/value)值。例如:{"json":"hello json"},格式:最外面是大括號,裏面的key和value被冒號(:)分開。
添加:new JSONObject().put{"json":"hello json"};其中value的類型有:Boolean、JSONArray、JSONObject、Number、String、JSONObject.NULL object
(2)、JsonArray
代表一組有序的數值。例如:[name1,name2,name3],格式:用方括號包裹,數值間用逗號(,)分隔
查找:可以用get(下標)和opt(下標)兩種方法;添加:put()方法。類型同JsonObject:
(3)、JsonStringer:
json文本構建類
(4)、JsonTokener:
json解析類
(5)、JsonException:
json中用到的異常
三、json實例:
(1)、Object實例:
{
"people":{"name":"zhangsan",
"sex":"女".
"age":"23"
},
"people":{"name":"lisi",
"sex":"男".
"age":"23"
}
}
(1)、Array實例:
[
{
"zhangsan":"100",
"lisi":"80",
"wangwu":"90",
},
{
"xiaoming":"20",
"xiaohong":"40",
"xiaohua":"30",
}
]
四、json解析
(1)、解析Object
String str={"name":"zhangsan"};
JSONObject json=new JSONObject(str);
log.i("json",json.getString("name"));
(2)、解析Array
String str={"number":[1,2,3]};
JSONObject json=new JSONObject(str);
JSONArray number=json.getJSONArray("number");
for(int i=0;i<number.length;i++){
log.i("json",number.getInt(i)+"");
}
五、FastJson是阿里巴巴工程師開發的一個json處理工具包,包括“序列化”和“反序列化”兩部分。支持Java Bean、集合、Map、日期等等
fastjson的最主要的使用入口是com.alibaba.fastjson.JSON
public static final Object parse(String text); // 把JSON文本parse爲JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse爲JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 將JavaBean序列化爲JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化爲帶格式的JSON文本 public static final Object toJSON(Object javaObject); 將JavaBean轉換爲JSONObject或者JSONArray
具體不多說,直接放案例
核心部分:
我用的最多的是json2object(),方法別的沒有怎麼用過
package com.example.jsontoobject;
import java.sql.Date;
import java.util.ArrayList;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
/**
* json轉化工具類 默認處理時間
*/
public class FastJsonUtil {
private static SerializeConfig mapping=new SerializeConfig();
/**
* Object轉化成json
*/
public static <T> T json2object(String jsonText,Class<T> clazz){
return (T) JSON.parseObject(jsonText, clazz);
}
public static ArrayList json2list(String jsonText,Class clazz){
ArrayList list=new ArrayList();
try {
list=(ArrayList) JSON.parseArray(jsonText, clazz);
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
/**
* Object轉化成json
*/
public static String object2json(Object jsonText){
return JSON.toJSONString(jsonText, SerializerFeature.WriteDateUseDateFormat);
}
/**
* Object轉化成json 自定義時間格式
*/
public static String object2json(String dateFormat, Object jsonText){
mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
return JSON.toJSONString(jsonText, mapping);
}
}
下載地址:http://download.csdn.net/detail/u010074054/8791667