使用json-lib将JSONObject转Java对象,JSONArray转Java集合
来源:互联网 发布:袁和平 知乎 编辑:程序博客网 时间:2024/06/02 05:23
解析用的json包
gradle 引用
net.sf.json-lib:json-lib:2.4:jdk15
待转换用的Json对象(userString)
{ "Name": "nameA", "title": "title1", "orders": [ { "Sn": 123, "amount": 20.50, "items": [ { "pid": "p_1", "pName": "p1_name" } ] }, { "Sn": 456, "amount": 23.00, "items": [ { "pid": "p_2", "pName": "p2_name" } ] } ]}
待转换用的Json数组(userArrString)
[ { "Name": "nameA", "title": "title1", "orders": [ { "Sn": 123, "amount": 30.50, "items": [ { "pid": "p_1", "pName": "p1_name" } ] }, { "Sn": 456, "amount": 24.50, "items": [ { "pid": "p_2", "pName": "p2_name" } ] } ] }, { "Name": "nameB", "title": "title2", "orders": [ { "Sn": 223, "items": [ { "pid": "p_3", "pName": "p3_name" } ] }, { "Sn": 446, "items": [ { "pid": "p_5", "pName": "p5_name" } ] } ] }]
对应的三个Java类,省略了相应的getter/setter方法
一个User对应多个Order,一个Order对应多个Item
public class User implements Serializable { private String name; private List<Order> orders; .....}public class Order implements Serializable { private String sn; private BigDecimal amount; private Set<Item> items; ......}public class Item implements Serializable { private String pid; private String pName; ......}
JsonObject转java对象
@Testpublic void testJson2Obj() { try { JSONObject userJson = JSONObject.fromObject(userString); User u = (User) JSONObject.toBean(userJson, getJsonConfig()); printUser(u); } catch (Exception e) { e.printStackTrace(); }}/*** 因json对象中的key以大写字母开头,而java类中的属性是小写字母* 此方法用于将json中的key的首字母变为小写,以适应java类中的属性名**/class unCapitalPropertyNameProcessor implements PropertyNameProcessor { @Override public String processPropertyName(Class arg0, String arg1) { return StringUtils.uncapitalize(arg1); }}/*** 定义jsonConfig**/private JsonConfig getJsonConfig() { JsonConfig jsonConfig = new JsonConfig(); //要将json转为user jsonConfig.setRootClass(User.class); //设置json中数组要对应的java对象 Map<String, Class<?>> map = new HashMap<String, Class<?>>(); map.put("orders", Order.class); map.put("items", Item.class); jsonConfig.setClassMap(map); //注册java属性名处理器 //如果不注册的话,会因为json中的key的值与java中的属性名称不同而无法将value值设置到相应的java属性中 jsonConfig.registerJavaPropertyNameProcessor(User.class, new unCapitalPropertyNameProcessor()); jsonConfig.registerJavaPropertyNameProcessor(Order.class, new unCapitalPropertyNameProcessor()); return jsonConfig;}
JSONArray转Java集合
JSON数组转java集合与json对象转java对象相同
@Testpublic void testJsonArray2List() { JSONArray userJsonArr = JSONArray.fromObject(userArrString); List<User> list = (List<User>) JSONArray.toCollection(userJsonArr, getJsonConfig()); for (User u : list) { printUser(u); }}
1 0
- 使用json-lib将JSONObject转Java对象,JSONArray转Java集合
- 使用json-lib将Java对象转SONObject,Java集合转JSONArray
- 使用json-lib JSONObject JSONArray
- 使用json-lib jsonObject 把json 转换成 java对象
- java JSONObject JSONArray对象使用小记
- json-lib使用,JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray
- json-lib使用篇:JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray
- json-lib使用,JSONObject和JSONArray .
- json-lib使用,JSONObject和JSONArray .
- java json字符串转JSONObject和JSONArray以及取值
- java json字符串转JSONObject和JSONArray 循环取值
- 342. Power of Four【easy】【python】
- 13(多线程)
- UVA
- 十二、####
- google map开发
- 使用json-lib将JSONObject转Java对象,JSONArray转Java集合
- GAT-解决车辆基本信息中,删除未返场的车辆时,错误提示信息Bug
- 用ListView自带的多选模式完成多选功能
- 升级GCC
- sina短网址转换
- hdu 2289 基础二分
- Eclipse下导入外部jar包的3种方式
- 游戏同步算法
- 系统集成项目管理工程师教程知识点总结4