Разбор JSON с org.json

Я пытаюсь разобрать вывод с сервера, который выглядит так:

{
  "GetFolderFilesByZoneResult": [
    {
      "ID": 98748,
      "CreatedBy": "",
      "UpdatedBy": "none",
      "CreatedDate": "\/Date(1308273033620+0100)\/",
      "UpdatedDate": "\/Date(1308303003770+0100)\/",  
      "CommentCount": 0,
      "Key": "",
      "Enabled": true,
      "MimeType": "video",
      "Votes": 2,
      "TotalRating": 0,
      "AllowComments": true,
      "ViewCount": 323,
      "ReleaseDate": "\/Date(1308273000000+0100)\/",
      "ExpireDate": "\/Date(4102444800000+0000)\/",
      "Author": "",
      "Size": 133799936,
      "Tag1": "",
      "Tag2": "",
      "Tag3": "",
      "RecycleBin": false
    },
    {
      "ID": 99107,
      "CreatedBy": "",
      "UpdatedBy": "none",
      "CreatedDate": "\/Date(1308583412520+0100)\/",
      "UpdatedDate": "\/Date(1308583564007+0100)\/",     
      "CommentCount": 0,
      "Key": "",
      "Enabled": true,
      "MimeType": "video",
      "Votes": 0,
      "TotalRating": 0,
      "AllowComments": true,
      "ViewCount": 33,
      "ReleaseDate": "\/Date(1308583380000+0100)\/",
      "ExpireDate": "\/Date(4102444800000+0000)\/",
      "Author": "",
      "Size": 47955968,
      "Tag1": "",
      "Tag2": "",
      "Tag3": "",
      "RecycleBin": false
    }
  ]
}

Я пытаюсь использовать Java org.json для его анализа, но у меня нет опыта работы с JSON/org.json, поэтому у меня небольшие проблемы. Как я могу разобрать это?

Ответы

Ответ 1

1) Предполагая, что у вас есть библиотеки JSON на вашем пути (от www.json.org), это довольно легко.

import org.json.JSONTokener;
...

URI uri = new URI("http://someserver/data.json");
JSONTokener tokener = new JSONTokener(uri.toURL().openStream());
JSONObject root = new JSONObject(tokener);

Оттуда вы можете обратиться к различным частям объекта JSON. Взгляните на Javadocs на специфику. https://developer.android.com/reference/org/json/package-summary.html

Ответ 2

Вот самое универсальное решение, которое позволяет разобрать любой тип JSON в соответствующий тип Java:

Object json = new JSONTokener(response).nextValue();

Затем вы можете определить результирующий тип и обработать его соответствующим образом.

Ответ 3

Я бы передал его

map<String, Object> 

загружен

map<String, Object> 

в поле объекта.

В основном воссоздать иерархию ваших классов Java внутри большой карты.

Пример:

return ( Map<"GetFolderFilesByZoneResult", Map<"Result1", (object by id 98748) | "Result2", (object by id 99107) | "Result3", etc.

JSON вернет эту большую карту, очень похожую на нее, и программным способом легче сделать списки.