java json строка в массив json - PullRequest
2 голосов
/ 20 марта 2020

У меня есть JsonArray в виде строки с несколькими объектами JsonObject. Поскольку я не являюсь java разработчиком, я немного растерялся, поскольку преобразовать JsonObjects в строки и строки в JsonObjects очень сложно.

У меня есть JsonArray в виде строки.

[{
    "id":"XXXX-XXXX-XXXX-XXXX-XXXX",
    "name":"Name"
},{
    "id":"XXXX-XXXX-XXXX-XXXX-XXXX",
    "name":"Name"
}]

Оно изменяется, и я не знаю, какие данные оно содержит.

Цель: Мне нужно преобразовать строку json в JsonArray, чтобы я мог работать с ней. Я попробовал gson, но получил только пустые объекты.

Что я пробовал:

Gson g = new Gson();
JSONObject jsons[] = g.fromJson(JsonString, JSONObject[].class);

Вывод:

Log.e ( "JSON", Integer.toString(jsons.length)); ---> 2 (Right!)
Log.e ( "JSON", jsons[0].toString()); ---> { } empty Object 

1 Ответ

1 голос
/ 20 марта 2020

Вы должны использовать JsonArray вместо JsonObject[]. Пример кода:

String json = "[{ " + 
              "    \"id\":\"XXXX-XXXX-XXXX-XXXX-XXXX\", " + 
              "    \"name\":\"Name\" " + 
              "},{ " + 
              "    \"id\":\"XXXX-XXXX-XXXX-XXXX-XXXX\", " + 
              "    \"name\":\"Name\" " + 
              "}]";
Gson gson = new Gson();
JsonArray array = gson.fromJson(json,JsonArray.class);
System.out.println(array);

Вывод:

[{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"},{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"}]

Если вы хотите работать с JsonObject[], вы можете сделать что-то вроде этого:

JsonArray array = gson.fromJson(json,JsonArray.class);
JsonObject[] objects = new JsonObject[array.size()];
for(int i=0;i<array.size();i++)
    objects[i] = array.get(i).getAsJsonObject();
for(JsonObject x : objects)
    System.out.println(x);

Вывод :

{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"}
{"id":"XXXX-XXXX-XXXX-XXXX-XXXX","name":"Name"}
...