如何解析嵌套在json数组中的这个json对象

时间:2016-04-19 21:38:28

标签: java android json

我正在使用此代码

private void parseData(JSONArray array){
        Log.d(TAG, "Parsing array");


        for(int i = 0; i<array.length(); i++) {
            bookItems bookItem = new bookItems();
            JSONObject jsonObject = null;
            try {
                jsonObject = array.getJSONObject(i);

                JSONObject bookChapter = jsonObject.getJSONObject("chapter");
                bookItem.setbook_subtitle(bookChapter.getString("subtitle"));

                JSONObject chapVerses = jsonObject.getJSONObject("verses");
                JSONArray verseReaders = chapVerses.getJSONArray("readers");
                JSONObject readersNum = verseReaders.getJSONObject("number");
                verseReadNum = readersNum;


            } catch (JSONException w) {
                w.printStackTrace();
            }
            mbookItemsList.add(bookItem);

        } 

    }

解析这个json。

[
  {
    "chapter": {
      "subtitle": "Something happened in this in this chapter"
    },
    "verses": {
      "about": [
        {
          "In this verse, a lot of things happened yes a lot!"
        }
      ],
      "readers": [
        {
          "read": false,
          "number": "No body has read this verse yet"
        }
      ],

    }
  }, 
  ...]

我正在收到&#34;副标题&#34;这是正确的,但我得到了#34;数字&#34;。

从第JSONObject readersNum = verseReaders.getJSONObject("number");行开始,Android工作室抱怨JSONArray中的 getJSONOBJECT(int)无法应用于(java.lang.String)

请问,我该如何正确解析这个?

2 个答案:

答案 0 :(得分:1)

<TextView android:id="@+id/calendar_year" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:text="2016" /> TextView label = (TextView) row.findViewById(R.id.calendar_month); verseReaders,因此您需要迭代(或取第一个)JSONArray,然后从该对象中获取字符串。

JSONObject

答案 1 :(得分:0)

您必须使用嵌套循环。只需为“读者”添加一个for