Reputation: 1060
I'm trying to encode this string for a POST
request. Can anyone tell me how I can encode
{"jsonrpc": "2.0", "method": "Files.GetSources", "params":{"media":"music"}, "id": 1}
So far I have
JSONOjbect obj = new JSONObject();
obj.put("jsonrpc", "2.0");
obj.put("method", "Files.GetSources");
But I'm not sure how to put in the rest - can anyone help?
Upvotes: 12
Views: 26613
Reputation: 21066
JSONOjbect obj = new JSONObject().put("jsonrpc", "2.0")
.put("method", "Files.GetSources").put("id", 1)
.put("params", new JSONObject().put("media", "music"));
Chaining .put() like this is possible because put() returns the object it was called on - for this exact purpose.
Upvotes: 3
Reputation: 120286
If you're asking how you'd put the nested params
object in there, you'd probably do:
JSONObject params = new JSONObject();
params.put("media", "music");
obj.put("params", params);
To use an array (per your comments below), you'd do something like this:
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);
Upvotes: 26
Reputation: 3231
Well, if you do have the string before hand, you can simply do
JSONObject object = JSONObject.getJSONObject("{\"jsonrpc\": \"2.0\", \"method\": \"Files.GetSources\", \"params\":{\"media\":\"music\"}, \"id\": 1}");
Upvotes: 0
Reputation: 25058
You have two choices. You can create another object that holds "media":"music"
and then put that in the original JSONObject
or you can just pass this whole string into the JSONObject
constructor and have it parse it for you.
Upvotes: 0