2016-03-11 2 views
0

Я пытаюсь реализовать метод, который может перемещаться по объекту JSONObject до тех пор, пока не найдет данный параметр. Мой JSON структурирован как система папок. Есть папки и каждая папка может иметь папку Служит для расположения файлов может иметь другую папку и так on.JSON выглядит так:Навигация по JSONObject Android

{ 
    "Elements": [ 
{ 
    "file": { 
    "files": [ 
     { 
     "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
     "modified": 1457608018166, 
     "name": "Bild1" 
     }, 
     { 
     "id": "0efd76e7-730e-428a-96a4-95e04844070a", 
     "modified": 1457608018166, 
     "name": "Audio" 
     }, 
     { 
     "files": [ 
      { 
      "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
      "modified": 1457608018166, 
      "name": "Bild2" 
      }, 
      { 
      "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
      "modified": 1457608018166, 
      "name": "Bild3" 
      }, 
      { 
      "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
      "modified": 1457608018166, 
      "name": "Bild4" 
      } 
     ], 
     "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
     "name": "FolderInRoot" 
     } 
    ], 
    "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
    "name": "RootFolder" 
    } 
}, 
{ 
    "file": { 
    "files": [], 
    "id": "562dd7a2-9268-46b2-8963-b7a3b43e906e", 
    "name": "AnotherRootFolder" 
    } 
} 
    ] 
} 

Так, например, я хочу, чтобы редактировать «Bild2», который имеет путь «/ RootFolder/FolderInRoot/Bild2" . У кого-то есть метод, который переходит к этой заданной позиции. Путь должен быть параметром.

ответ

2

Вам нужно пройти через ответ JSON, пока не дойдете до нужной глубины, а затем вы можете использовать getString («имя»), чтобы получить контент по этому ключу (то есть Bild2). После того, как вы получите контент из объекта/ключа, вы можете добавить его в список или карту, чтобы перебрать или сделать что-либо еще с данными. См. Этот вопрос StackOverflow для получения дополнительной информации: Java loop over Json array?

Возможно, вам захочется использовать библиотеку Gson, чтобы упростить синтаксический анализ. Если вы можете добавить Gson в проект (и я предлагаю, чтобы вы это сделали), есть тонна больших учебников для анализа данных и десериализации JSON в простые объекты Java (что избавит вас от головной боли вложенных циклов). Using GSON in Android to parse a complex JSON object и http://blog.nkdroidsolutions.com/how-to-parsing-json-array-using-gson-in-android-tutorial/ - два хороших источника для начала.

(P.S. вы можете рассмотреть возможность упрощения структуры JSON, если это возможно, потому что с ней будет намного легче работать).

+0

Не могли бы вы дать мне подсказку, как сгладить мой Json ?! – davidOhara

+0

Ну, когда я говорю «сплюснутый», я просто хочу упростить структуру - попытайтесь выровнять столько слоев JSON, насколько это возможно, даже если это означает дублирование некоторых данных. Если вы не можете тогда сделать все возможное, чтобы сделать код синтаксического анализа Java максимально читабельным. И, как я сказал в ответ, используйте JsonObject/JsonArray от Gson вместо обычного JSONObject/JSONArray Java, если вы можете добавить зависимость. http://stackoverflow.com/questions/20379387/parsing-json-nested-array-with-gson-on-android и http://blog.nkdroidsolutions.com/how-to-parsing-json-array-using- gson-в-Android-учебник / –

Смежные вопросы