12

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?

1
  • You're going to have to be a lot more specific if you expect any useful replies. Commented Feb 10, 2012 at 16:28

4 Answers 4

26

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);
Sign up to request clarification or add additional context in comments.

3 Comments

thanks! That worked! Sorry for being vague, could you multiple nested? For example .. for one like this.. {"jsonrpc": "2.0", "method": "VideoLibrary.GetMovies", "params": {"properties": ["resume", "genre", "studio", "tagline", "runtime", "fanart", "thumbnail", "file", "plot", "plotoutline", "year", "lastplayed", "rating"]}, "id": 1}
Yes, you can nest things as far as you like (using the same principle from this answer). For your properties, you'd use a JSONArray instead of JSONObject.
@RethinavelPillai - It's the OP's original, top-level object that he's trying to add nested items to.
3
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.

1 Comment

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

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.

Comments

0

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}");

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.