JSON解析辅助

时间:2018-12-13 21:55:49

标签: android json parsing

我可以在应用程序中记录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 :(得分:3)

基础对象是对象数组。

尝试一下:

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

答案 1 :(得分:3)

首先,您需要使用工具来更好地了解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);
}