JSON помощь при разборе - PullRequest
       3

JSON помощь при разборе

0 голосов
/ 14 декабря 2018

Я могу зарегистрировать файл JSON в своем приложении, но у меня возникают проблемы с анализом файла JSON.Я пытаюсь получить название каждого рецепта, чтобы я мог отобразить его в RecyclerView.Позже мне понадобятся дополнительные данные из JSON. Было бы лучше, если бы все операции выполнялись сразу или по мере необходимости?

Вот ссылка на JSON https://d17h27t6h515a5.cloudfront.net/topher/2017/May/59121517_baking/baking.json

JSONObject recipeObject = new JSONObject(jsonString);
JSONArray recipeResults = recipeObject.getJSONArray("name");

Log.d(LOGTAG, "Recipe Results " + recipeResults.toString());

Это результат журнала

2018-12-13 13:56:43.622 31472-31472/com.shawn.nichol.bakingapp W/System.err:     at com.bakingapp.Data.ExtractRecipeData.recipeData(ExtractRecipeData.java:19)

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Прежде всего, вам нужно использовать инструмент, чтобы лучше понять вашу структуру json. Я использую jsoneditoronline. См. В ссылке предварительный просмотр вашего jsonobject. http://jsoneditoronline.org/?id=dac21affd6544a00a553360e2c9fa311

Разбор лучше выполнить сначала, чем передатьДанные для RecyclerViewAdapter, эта библиотека должна вам очень помочь https://github.com/google/gson вот учебник для gson: https://howtodoinjava.com/apache-commons/google-gson-tutorial-convert-java-object-to-from-json/

Прежде чем пытаться получить доступ к имени, вам нужно получить доступ к элементу массива, скажем, вывам нужно получить имя первого объекта, который является пирогом с нутеллой, который вы делаете следующим образом:

JSONArray myJsonArray = new JSONArray(jsonString);
JSONObject recipeObject = myJsonArray.getJSONObject(0);

Log.d(LOGTAG, "Recipe Name" + recipeObject.getString("name").toString());

если вы хотите конвертировать JSON в Java, вам нужно

Recipe recipe= gson.fromJson(recipeObject.toString(), Recipe.class);

получить вседанные как так

List<Recipe> recipeList = new ArrayList();
Gson gson = new Gson();
for (int i = 0; i < jsonArray.length(); i++) {
   Recipe recipe= gson.fromJson(myJsonArray .get(i).toString(), Recipe.class);
   recipeList.add(recipe);
}
0 голосов
/ 14 декабря 2018

Базовый объект - это массив объектов.

Попробуйте это:

JSONArray recipes = new JSONArray(jsonString); 

for(int i = 0; i < recipes.length(); i++){ 
    JSONObject recipe = recipes.getJSONObject(i); 
    Log.d(LOGTAG, "Recipe name: " + recipe.getString("name"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...