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