簡體   English   中英

從JSONObject創建JSONArray

[英]create JSONArray from JSONObject

大家好

我無法從JSONObject解析JSONArray。 我可能只是誤會了。

創建要發送的JSONObject:

int i = 0;
JSONArray jsonArray = new JSONArray();
String line;

while ((line = bufferedReader.readLine()) != null) {
    JSONObject rule = new JSONObject().put("rule", line);
    jsonArray.put(i,rule);
    i++;
}
return (new JSONObject().put(jsonStrings.REQUEST_RULES_ALL_RESPONSE, jsonArray));

這將在json對象內發送一個json數組,使事情變得更簡單。 這是對的。

返回的對象采用以下格式:

{"REQUEST_RULES_ALL_RESPONSE":[ 
        {"rule":"something"},
        {"rule":"something"},
        {"rule":"something"}  ]}

我想將其解析為列表規則。 讀取收到的JSONObject:

//this returns the object as described above
JSONObject jsonObject = serverData.SendData(new JSONObject().put(jsonStrings.REQUEST_RULES_ALL, " ")); 

//Trying to Convert to JSONArray, the get strings are correct, 
//notice the REQUEST and REQUEST RESPONSE.

//problem line below
JSONArray JSONFirewallRules = new JSONArray ((JSONArray)jsonObject.get(jsonStrings.REQUEST_RULES_ALL_RESPONSE));  

錯誤:org.json.JSONException:不是原始數組:類org.json.JSONArray

我不明白為什么這是一個問題。 我想從對象獲取JSONArray。

在有問題的行中,而不是強制轉換為JSONArray,請使用getJSONArray:

JSONArray JSONFirewallRules = jsonObject.getJSONArray(jsonStrings.REQUEST_RULES_ALL_RESPONSE); 

但是,該異常不是強制轉換異常,而是構造函數異常,在該異常中,您嘗試從不受支持的項目列表(這是另一個JSONArray)中構建JSONArray對象:)

jsonObject.getJSONArray(key)引發異常
使用jsonObject.opt ...方法。 如果在json對象中找不到密鑰,則這些方法僅返回null
使用jsonObject.optJSONArray(key)代替jsonObject.getJSONArray(key)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM