2012-02-10 6 views
11

Próbuję zakodować ten ciąg dla żądania POST. Czy ktoś może mi powiedzieć jak mogę zakodowaćJak zagnieżdżać obiekty podczas budowania JSON z JSONObject

{"jsonrpc": "2.0", "method": "Files.GetSources", "params":{"media":"music"}, "id": 1} 

tej pory mam

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

Ale nie jestem pewien, jak umieścić w pozostałej - może ktoś pomóc?

+0

Będziesz musiał być _a lot_ dokładniej jeśli można oczekiwać żadnych użytecznych odpowiedzi. –

Odpowiedz

22

Jeśli pytasz jak chcesz umieścić obiekt zagnieżdżony params tam, to pewnie zrobić:

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

obj.put("params", params); 

Aby używać tablicy (za swój komentarz poniżej), to” Zrób coś takiego:

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

dzięki! To się udało! Przepraszam za bycie niejasnym, czy mógłbyś zagnieździć się w wielu? Na przykład .. dla takiego jak ten .. {"jsonrpc": "2.0", "method": "VideoLibrary.GetMovies", "params": {"properties": ["wznowić", "gatunek", " studio "," tagline "," runtime "," fanart "," thumbnail "," file "," plot "," plotoutline "," rok "," ostatnia gra "," ocena "]}," id ": 1 } –

+0

Tak, możesz zagnieżdżać rzeczy tak daleko jak chcesz (używając tej samej zasady z tej odpowiedzi). Dla 'właściwości' użyłbyś' 'JSONArray'' (http://developer.android.com/reference/org/json/JSONArray.html) zamiast' JSONObject'. –

+0

Zaktualizowałem swoją odpowiedź na przykładzie. –

0

Masz dwie możliwości. Możesz utworzyć kolejny obiekt, który posiada "media":"music", a następnie umieścić go w oryginalnym JSONObject lub możesz po prostu przekazać cały ciąg do konstruktora JSONObject i zlecić jego analizę.

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

Możliwe jest takie połączenie .put(), ponieważ put() zwraca obiekt, do którego został wywołany - w tym celu.

+0

Brakuje nawiasów: 'JSONOjbect obj = new JSONObject(). Put (" jsonrpc "," 2.0 ") .put (" metoda "," Files.GetSources "). Put (" id ", 1) . put ("params", nowy JSONObject(). put ("media", "music")); ' – Andrea

0

Cóż, jeśli masz łańcuch przed ręką, można po prostu zrobić

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