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();方法獲取

org.json.JSONObject:  獲取的字段類型必須跟getXXX()的類型一樣

net.sf.json.JSONObject:   沒有嚴格要求獲取字段的類型跟getXXX()的類型一樣

例如:

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

 


免責聲明!

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



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