net.sf.json.JSONObject 和org.json.JSONObject  的差别。

一、创建json对象

String str = "{\"code\":\"0000\", \"msg\":{\"availableBalance\":31503079.02}}
org.json.JSONObject:
 JSONObject json = new JSONObject(str);
 
 or 
 
 JSONStringer json = new JSONStringer  (); 
 
 json .put("code","???");
 json .put("msg","???");
 区别:JSONObject 不排序,而JSONStringer 是排序的。
net.sf.json.JSONObject:
JSONObject json = JSONObject.fromObject(str);  net.sf.json.jsonobject 没有 new JSONObject(String)的构造方法

二、解析json

第一种直接用json对象.getXXX();方法获取

net.sf.json.JSONObject: 没有严格要求获取字段的类型跟getXXX()的类型一样
 org.json.JSONObject:获取的字段类型必须跟getXXX()的类型一样
 e.g.
 JSONObject msgObj = json.getJSONObject("msg");
String availableBalance = msgObj.getString("availableBalance");
org.json.JSONObject 就会报错,可以msgObj.getDouble("availableBalance");也不会丢精度;而net.sf.json.JSONObject正确,但是精度会丢失,如果String str = "{\"code\":\"0000\", \"msg\":{\"availableBalance\":\"31503079.02\"}}";

就不会丢失精度。

第二中json对象直接转变实体对象

转载地址:

org.json.JSONObject:
stringToValue(String);
//测试未通过,一直报Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to weather.Weather
未弄清楚什么问题
BalanceDto 类中availableBalance 的类型跟json中的“availableBalance ”类型不同意
net.sf.json.JSONObject:
String msg = json.getString("msg");
 BalanceDto  alanceDto = (BalanceDto) JSONObject.toBean(
 msg, new BalanceDto().getClass()); 三、从json中获取数组
 JSONArray subArray = json.getJSONArray("msg");
net.sf.json.JSONObject:
subArray.size();
org.json.JSONObject:
int leng = subArray.length();


net.sf.json.JSONObject 和org.json.JSONObject  的差别。

一、创建json对象

String str = "{\"code\":\"0000\", \"msg\":{\"availableBalance\":31503079.02}}
org.json.JSONObject:
 JSONObject json = new JSONObject(str);
 
 or 
 
 JSONStringer json = new JSONStringer  (); 
 
 json .put("code","???");
 json .put("msg","???");
 区别:JSONObject 不排序,而JSONStringer 是排序的。
net.sf.json.JSONObject:
JSONObject json = JSONObject.fromObject(str);  net.sf.json.jsonobject 没有 new JSONObject(String)的构造方法

二、解析json

第一种直接用json对象.getXXX();方法获取
net.sf.json.JSONObject: 没有严格要求获取字段的类型跟getXXX()的类型一样
 org.json.JSONObject:获取的字段类型必须跟getXXX()的类型一样
 e.g.
 JSONObject msgObj = json.getJSONObject("msg");
String availableBalance = msgObj.getString("availableBalance");
org.json.JSONObject 就会报错,可以msgObj.getDouble("availableBalance");也不会丢精度;而net.sf.json.JSONObject正确,但是精度会丢失,如果String str = "{\"code\":\"0000\", \"msg\":{\"availableBalance\":\"31503079.02\"}}";
就不会丢失精度。
第二中json对象直接转变实体对象
org.json.JSONObject:stringToValue(String);

//测试未通过,一直报Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to weather.Weather

未弄清楚什么问题

BalanceDto 类中availableBalance 的类型跟json中的“availableBalance ”类型不同意

net.sf.json.JSONObject:

String msg = json.getString("msg");
 BalanceDto  alanceDto = (BalanceDto) JSONObject.toBean(
 msg, new BalanceDto().getClass());

三、从json中获取数组

JSONArray subArray = json.getJSONArray("msg");
net.sf.json.JSONObject:
subArray.size();
org.json.JSONObject:
int leng = subArray.length();