The method fromObject(String) is undefined for the type JSONObject

文章轉載:http://my.oschina.net/wangwu91/blog/340721
如果有版權問題,請聯繫我。

原文標題:net.sf.json.JSONObject 和org.json.JSONObject 的差別

其實,出現fromObject沒有被定義,是因爲json有兩個包,就是net.sf.json和org.json。在使用json的過程中,會有包的導入。
導入的頁面

看你選擇導入的包,如果選擇的是org.json.json這個包,就會出現undefined。

下面是轉載過來的文章。關於兩個包之間的區別。
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");
{\"availableBalance\":\"31503079.02\"}}";

org.json.JSONObject 就會報錯,可以msgObj.getDouble(“availableBalance”);也不會丟精度;

net.sf.json.JSONObject正確,但是精度會丟失,如果
String str = "{\"code\":\"0000\", \"msg\":

就不會丟失精度。

第二中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();

json net.sf.json的需要的包:
下載地址:http://download.csdn.net/detail/shaoqianting/8698183

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章