How to nest objects when building JSON with JSONObject

前端 未结 4 1997
梦如初夏
梦如初夏 2021-02-07 20:34

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\",         


        
相关标签:
4条回答
  • 2021-02-07 21:34

    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.

    0 讨论(0)
  • 2021-02-07 21:36
    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.

    0 讨论(0)
  • 2021-02-07 21:38

    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);
    
    0 讨论(0)
  • 2021-02-07 21:39

    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}");
    
    0 讨论(0)
提交回复
热议问题