需求
根据api想做一个实时读取论坛信息的小程序,读取api之后需解析json, 之前亚辉说过FastJSON比较好用, 所以就用到了这个学习了教程. 用完之后总结记录一下.
FastJSON
FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库. 如果使用Maven,在pom.xml文件中加入以下依赖.
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.23</version>
</dependency>
序列化
一直觉得序列化很神秘, 用过才发现序列化就是把JavaBean对象转成JSON格式的字符串。 com.alibaba.fastjson.JSON提供了许多方法(多态)实现序列化。
例1
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("key1", "One");
map1.put("key2", "Two");
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("key1", "Three");
map2.put("key2", "Four");
list.add(map1);
list.add(map2);
String listJson = JSON.toJSONString(list);
输出结果
[{"key1":"One","key2":"Two"},{"key3":"Three","key4":"Four"}]
例2
User user = new User();
user.setUserName("李四");
user.setAge(24);
String userJson = JSON.toJSONString(user);
输出结果
{"age":24,"userName":"李四"}
反序列化
反序列化就是把JSON格式的字符串转化为Java Bean对象。 com.alibaba.fastjson.JSON提供了许多方法(多态)实现反序列化。
将例1反序列化
List<Map> list1 = JSON.parseArray(listJson, Map.class);
for(Map<String, Object> map : list1){
System.out.println(map.get("key1"));
System.out.println(map.get("key2"));
}
JSONObject,JSONArray
JSONObject,JSONArray是JSON的两个子类。
JSONObject相当于Map<String, Object>,
JSONArray相当于List