使用json-lib将JSONObject转Java对象,JSONArray转Java集合
2017-03-03 17:37
726 查看
解析用的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对应多个Itempublic 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对象
@Test public 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对象相同@Test public void testJsonArray2List() { JSONArray userJsonArr = JSONArray.fromObject(userArrString); List<User> list = (List<User>) JSONArray.toCollection(userJsonArr, getJsonConfig()); for (User u : list) { printUser(u); } }
相关文章推荐
- 使用json-lib将Java对象转SONObject,Java集合转JSONArray
- 对象中含有java.util.Date时使用JSONArray.fromObject时时间显示问题
- 使用json-lib遍历数组与对象(JSONArray与JSONObject)
- json对象、json格式字符串、java对象【使用此net.sf.json.JSONObject将java对象[比如数组集合Map、Map扩展]转换成json格式字符串】
- 百度天气api开发 全解析xml和json格式 使用json-lib jsonObject、 Gson 方式把json 转换成 java对象
- web服务端使用JSONArrayy或JSONObject转json字符串为Java对象或数组
- java JSONObject JSONArray对象使用小记
- 使用json-lib jsonObject 把json 转换成 java对象
- Json-lib使用——JSONObject与JSONArray
- Java学习笔记50:JSONObject与JSONArray的使用 .
- Java使用JSONObject的Jar包问题,json-lib 2.4
- java使用json-lib进行Java对象和JSON之间的转换
- java JSON使用之JSONObject、JSONArray与Object的转换
- 使用JSONArray.fromObject转化list时,如果有集合属性,很容易出错,此刻把集合属性过滤掉便可
- JSONObject JSONSerializer JSONArray java中的使用
- 使用JSON-LIB转换JAVA对象
- Json-lib使用——JSONObject与JSONArray
- Java学习笔记50:JSONObject与JSONArray的使用
- Java学习笔记50:JSONObject与JSONArray的使用
- Java之使用json-lib进行对象与json字符串之间的转换