2012-02-10 41 views
11

建設JSON當我想這個字符串爲POST請求編碼對象。誰能告訴我怎麼可以編碼如何嵌套的JSONObject

​​

到目前爲止,我有

JSONOjbect obj = new JSONObject(); 
obj.put("jsonrpc", "2.0"); 
obj.put("method", "Files.GetSources"); 

但我不知道如何把在其餘的 - 誰能幫助?

+0

你將必須_a lot_更具體的,如果你希望任何有用的回覆。 – 2012-02-10 16:28:37

回答

22

如果你問你如何把嵌套params對象在那裏,你可能會做的事:

JSONObject params = new JSONObject(); 
params.put("media", "music"); 

obj.put("params", params); 

要使用(每下面您的意見)的數組,你」 d做類似這樣的事情:

JSONArray properties = new JSONArray(); 
properties.put("resume"); 
properties.put("genre"); 
properties.put("studio"); 
... 

JSONObject params = new JSONObject(); 
params.put("properties", properties); 

obj.put("params", params); 
+0

謝謝!這工作!對不起,模糊不清,你能嵌套多個嗎?例如..對於這樣的一個.. {「jsonrpc」:「2.0」,「method」:「VideoLibrary.GetMovies」,「params」:{「properties」:[「resume」,「genre」,「工作室」, 「標語」, 「運行」, 「同人畫」, 「縮略圖」, 「文件」, 「暗算」, 「plotoutline」, 「年」, 「lastplayed」, 「等級」]}, 「ID」:1 } – 2012-02-10 16:38:01

+0

是的,你可以嵌套的事情就如你所願(使用這個答案同樣的原則)。爲了您的'properties',你會改爲使用['JSONArray'(http://developer.android.com/reference/org/json/JSONArray.html)JSONObject'的'。 – 2012-02-10 16:38:38

+0

我已經用示例更新了我的答案。 – 2012-02-10 16:43:11

0

你有兩種選擇。您可以創建包含"media":"music",然後把在原來JSONObject或者您可以將此整個字符串只是傳遞到JSONObject構造函數,並將它解析爲你的另一個對象。

0
JSONOjbect obj = new JSONObject().put("jsonrpc", "2.0") 
    .put("method", "Files.GetSources").put("id", 1) 
    .put("params", new JSONObject.put("media", "music")); 

像這樣的鏈接.put()是可能的,因爲put()返回它被調用的對象 - 爲了確切的目的。

+0

缺少括號:'JSONOjbect obj = new JSONObject()。put(「jsonrpc」,「2.0」) .put(「method」,「Files.GetSources」)。put(「id」,1) 。 put(「params」,new JSONObject()。put(「media」,「music」));' – Andrea 2016-11-30 19:01:25

0

好吧,如果你有前手串,你可以簡單地做

JSONObject object = JSONObject.getJSONObject("{\"jsonrpc\": \"2.0\", \"method\": \"Files.GetSources\", \"params\":{\"media\":\"music\"}, \"id\": 1}");