需求

根据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