net.sf.json.JSONObject 和org.json.JSONObject 的差別


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();

文章來自:http://my.oschina.net/wangwu91/blog/340721


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM