前端框架选型是企业提升开发效率与用户体验的关键因素
860
2022-10-07
(转)[Json]net.sf.json 和org.json 的差别及用法
net.sf.json.JSONObject 和org.json.JSONObject 的差别。一、创建json对象
String str = "{\"code\":\"0000\", \"msg\":{\"availableBalance\":31503079.02}}org.json.JSONObject:JSONObject json = new JSONObject(str);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对象直接转变实体对象
public class BalanceDto { private String availableBalance; public String getAvailableBalance() { return availableBalance; } public void setAvailableBalance(String availableBalance) { this.availableBalance = availableBalance; } public String toString(){ return "availableBalance "+availableBalance; }}org.json.JSONObject:BalanceDto alanceDto = (BalanceDto) JSONObject.stringToValue(msgObj);
这个句话编译通过,但是运行会报错,原因是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:int leng = subArray.size();org.json.JSONObject:int leng = subArray.length();
解决办法是改方法名
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~