fastjson使用(一) -- 最常用的功能[构造和解析JSON]

fastjson使用(一) -- 最常用的功能[构造和解析JSON]

标签: java json fastjson
2313人阅读 评论(0) 收藏 举报
分类:

在实际的开发过程中,很多时候数据传递,我们使用的JSON,这个时候,构造和解析JSON成了常用的功能了,Java实际开发中,网上有很多的JSON的类库,比如:json-lib、jackson、fastjson等等。而我今天要谈的是fastjson的使用。fastjson是阿里的开源的java的JSON类库。

1.构造JSON格式的数据

由于代码比较简单,就直接上代码:

  1. <span style="font-size:12px;">JSONObject object = new JSONObject();  
  2. object.put("key1""value1"); // String  
  3. object.put("key2"1); // int  
  4. object.put("key3"35.7); // double  
  5. object.put("numberString""55.8");  
  6. Map<String, Object> map = new HashMap<String, Object>();  
  7. map.put("map_key1""map_value1");  
  8. map.put("map_key2""map_value2");  
  9. object.put("key4", map); <span style="color:#3333FF;">// 如果是Map,则添加里层JSONObject</span>  
  10. object.putAll(map); <span style="color:#3333FF;">// 如果是通过putAll,则会循环依次作为Object对象插入JSONObject数据</span>  
  11. User user = new User();  
  12. user.setAge(18);  
  13. user.setName("张三");  
  14. <span style="color:#3333FF;">/* 
  15.  *  如果是实体类对象,则会将实体类组装成JSONObject放进去 
  16.  */</span>  
  17. object.put("user", user);  
  18. List<User> users = new ArrayList<>();  
  19. for (int i = 0; i < 3; i++) {  
  20.     User u = new User();  
  21.     u.setAge(i + 18);  
  22.     u.setSex(i % 2 == 0 ? "男" : "女");  
  23.     users.add(u);  
  24. }  
  25. object.put("list", users); // List  
  26. // 构造JSONArray格式的数据  
  27. JSONArray array = new JSONArray();  
  28. array.add("d");  
  29. object.put("array", array);</span>  
<span style="font-size:12px;">JSONObject object = new JSONObject();
object.put("key1", "value1"); // String
object.put("key2", 1); // int
object.put("key3", 35.7); // double
object.put("numberString", "55.8");
Map<String, Object> map = new HashMap<String, Object>();
map.put("map_key1", "map_value1");
map.put("map_key2", "map_value2");
object.put("key4", map); <span style="color:#3333FF;">// 如果是Map,则添加里层JSONObject</span>
object.putAll(map); <span style="color:#3333FF;">// 如果是通过putAll,则会循环依次作为Object对象插入JSONObject数据</span>
User user = new User();
user.setAge(18);
user.setName("张三");
<span style="color:#3333FF;">/*
 *  如果是实体类对象,则会将实体类组装成JSONObject放进去
 */</span>
object.put("user", user);
List<User> users = new ArrayList<>();
for (int i = 0; i < 3; i++) {
    User u = new User();
    u.setAge(i + 18);
    u.setSex(i % 2 == 0 ? "男" : "女");
    users.add(u);
}
object.put("list", users); // List
// 构造JSONArray格式的数据
JSONArray array = new JSONArray();
array.add("d");
object.put("array", array);</span>
查看构造的JSON数据格式:

  1. <span style="font-size:12px;">JSONObject : {"key4":{"map_key1":"map_value1","map_key2":"map_value2"},"key3":35.7,"map_key1":"map_value1","key2":1,"map_key2":"map_value2","numberString":"55.8","key1":"value1","list":[{"age":18,"date":"20160104","gender":"男"},{"age":19,"date":"20160104","gender":"女"},{"age":20,"date":"20160104","gender":"男"}],"user":{"age":18,"date":"20160104","name":"张三"},"array":["d"]}</span>  
<span style="font-size:12px;">JSONObject : {"key4":{"map_key1":"map_value1","map_key2":"map_value2"},"key3":35.7,"map_key1":"map_value1","key2":1,"map_key2":"map_value2","numberString":"55.8","key1":"value1","list":[{"age":18,"date":"20160104","gender":"男"},{"age":19,"date":"20160104","gender":"女"},{"age":20,"date":"20160104","gender":"男"}],"user":{"age":18,"date":"20160104","name":"张三"},"array":["d"]}</span>

2.解析JSON格式的数据

就以上面创建的JSON作为源数据进行解析:

  1. JSONObject object = new JSONObject(source); // 测试创建JSONObject  
  2. System.out.println("JSONObject : " + object.toJSONString());  
  3. // key4  
  4. JSONObject key4Object = object.getJSONObject("key4");  
  5. System.out.println("map_key1 value " + key4Object.getString("map_key1"));  
  6. System.out.println("map_key2 value " + key4Object.getString("map_key2"));  
  7. // key3  
  8. System.out.println("key3 value " + object.getDoubleValue("key3"));  
  9. System.out.println("key3 value " + object.getDouble("key3"));  
  10. System.out.println("key3 value " + object.getString("key3"));  
  11. // map_key1  
  12. System.out.println("map_key1 value " + object.getString("map_key1"));  
  13. // key2  
  14. System.out.println("key2 value " + object.getInteger("key2"));  
  15. System.out.println("key2 value " + object.getIntValue("key2"));  
  16. System.out.println("key2 value " + object.getDouble("key2"));  
  17. System.out.println("key2 value " + object.getDoubleValue("key2"));  
  18. System.out.println("key2 value " + object.getString("key2"));  
  19. // numberString  
  20. System.out.println("numberString value " + object.getString("numberString"));  
  21. System.out.println("numberString value " + object.getDouble("numberString"));  
  22. // user  
  23. JSONObject userObject = object.getJSONObject("user");  
  24. System.out.println("user : " + userObject.toJSONString());  
  25. User user = JSON.toJavaObject(userObject, User.class);  
  26. user.setSex("男");  
  27. System.out.println(user.toString());  
  28. // JavaBean --> String  
  29. String userString = JSON.toJSONString(user);  
  30. System.out.println("userString " + userString);  
  31. // list  
  32. JSONArray array = object.getJSONArray("list");  
  33. for (int i = 0; i < array.size(); i++) {  
  34.     User user2 = JSON.toJavaObject(array.getJSONObject(i), User.class);  
  35.     System.out.println(user2.toString());  
  36. }  
  37. // 解析失败  
  38. System.out.println("not exit : " + object.getInteger("integer")); // null  
  39. System.out.println("not exit : " + object.getIntValue("integer")); // 0  
JSONObject object = new JSONObject(source); // 测试创建JSONObject
System.out.println("JSONObject : " + object.toJSONString());
// key4
JSONObject key4Object = object.getJSONObject("key4");
System.out.println("map_key1 value " + key4Object.getString("map_key1"));
System.out.println("map_key2 value " + key4Object.getString("map_key2"));
// key3
System.out.println("key3 value " + object.getDoubleValue("key3"));
System.out.println("key3 value " + object.getDouble("key3"));
System.out.println("key3 value " + object.getString("key3"));
// map_key1
System.out.println("map_key1 value " + object.getString("map_key1"));
// key2
System.out.println("key2 value " + object.getInteger("key2"));
System.out.println("key2 value " + object.getIntValue("key2"));
System.out.println("key2 value " + object.getDouble("key2"));
System.out.println("key2 value " + object.getDoubleValue("key2"));
System.out.println("key2 value " + object.getString("key2"));
// numberString
System.out.println("numberString value " + object.getString("numberString"));
System.out.println("numberString value " + object.getDouble("numberString"));
// user
JSONObject userObject = object.getJSONObject("user");
System.out.println("user : " + userObject.toJSONString());
User user = JSON.toJavaObject(userObject, User.class);
user.setSex("男");
System.out.println(user.toString());
// JavaBean --> String
String userString = JSON.toJSONString(user);
System.out.println("userString " + userString);
// list
JSONArray array = object.getJSONArray("list");
for (int i = 0; i < array.size(); i++) {
    User user2 = JSON.toJavaObject(array.getJSONObject(i), User.class);
    System.out.println(user2.toString());
}
// 解析失败
System.out.println("not exit : " + object.getInteger("integer")); // null
System.out.println("not exit : " + object.getIntValue("integer")); // 0

注意:

    1.如果存入的String类型的数字,在解析的时候同样可以通过getDouble()的方式获取,会自动转换为double格式

    2.getXX()方式解析的时候,如果解析失败会返回null,而通过getXXValue()方式解析的时候,如果解析失败,会返回对应方式的默认值,比如:getIntValue() --> 0; getDoubleValue() --> 0.0; ……


0
2
 
 
猜你在找
机器学习之概率与统计推断
机器学习之数学基础
机器学习之凸优化
机器学习之矩阵
响应式布局全新探索
探究Linux的总线、设备、驱动模型
深度学习基础与TensorFlow实践
深度学习之神经网络原理与实战技巧
前端开发在线峰会
TensorFlow实战进阶:手把手教你做图像识别应用
查看评论

  暂无评论

发表评论
  • 用 户 名:
  • HFUTLXM
  •   
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值