FastJSON是阿里巴巴的出品的一个JSON类库,其功能强大,速度号称为当今最快,比net.sf.json,Google的GSON都要快。主要方法如下:
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。
SerializeWriter:相当于StringBuffer
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>
一些比较常用的方法:
1.List<Map<String,Object>>转JSONArray:
/** * list转json,首先需要得到JSON字符串 * @param list * @return */ public JSONArray listMap2JSONArray(List<Map<String,Object>> list){ /*JSON.toJSONString(object, prettyFormat),这里的prettyFormat当为真时, * 得到的JSON为带格式的JSON,否则为普通JSON */ return JSON.parseArray(JSON.toJSONString(list,true)); }
注意到以上代码的JSON.toJSONString(object, prettyFormat)方法,该方法第二个参数为布尔值,当该值为真时,转化得来的JSON字符串为带格式的JSON:
[ { "age":"21", "gender":"male", "name":"Tom" }, { "age":"21", "gender":"male", "name":"Tom" } ]
而当prettyFormat为假时,转化而来的是不带格式的JSON字符串:
[{"age":"21","gender":"male","name":"Tom"},{"age":"21","gender":"male","name":"Tom"}]
可以看到第一种格式的JSON字符串只是便于人们阅读而已。从便于计算机解析的角度来看,两者是一样的。
2.JSONArray转List<Map<String,Object>>
/** * JSONArray转listMap * @param jsonArray */ public List<Map<String,Object>> JSONArray2listMap(JSONArray jsonArray){ return JSON.parseObject(jsonArray.toJSONString(),new TypeReference<List<Map<String,Object>>>(){}); }
通过TypeReference实现泛型。
3.JSONObject转Map<String,Object>
/** * JSON转Map * @param jsonObj * @return */ public Map<String,Object> json2Map(JSONObject jsonObj){ return JSON.parseObject(jsonObj.toJSONString(),new TypeReference<Map<String,Object>>(){}); }
4.Map<String,Object>转JSONObject
/** * Map转JSON * @param map * @return */ public JSONObject map2JSON(Map<String,Object> map){ return JSON.parseObject(JSON.toJSONString(map,true)); }
5.JSON转List<JavaBean>
/** * JSONArray转List<File>(存储JavaBean的List) * @param jsonArray * @return */ public List<File> jsonArray2BeanList(JSONArray jsonArray){ return JSON.parseArray(jsonArray.toJSONString(),File.class); }