Как встраивать объекты при построении JSON с помощью JSONObject

Я пытаюсь закодировать эту строку для запроса POST. Может кто-нибудь сказать мне, как я могу кодировать

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

До сих пор у меня

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

Но я не уверен, как поставить остальных - может ли кто-нибудь помочь?

Ответ 1

Если вы спрашиваете, как вы вставляете туда вложенный объект params, вы, вероятно, будете делать:

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

obj.put("params", params);

Чтобы использовать массив (в соответствии с вашими комментариями ниже), вы сделали бы что-то вроде этого:

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

Ответ 2

У вас есть два варианта. Вы можете создать еще один объект, который содержит "media":"music", а затем поместить его в исходный JSONObject или просто передать эту целую строку в конструктор JSONObject и проанализировать его для вас.

Ответ 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(), как это возможно, потому что put() возвращает объект, на который он был вызван, - для этой цели.

Ответ 4

Хорошо, если у вас есть строка перед рукой, вы можете просто сделать

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