0
[    
    {
        "vid": "45",
        "name": "hello",
        "description": "hello",
        "help": "hello",
        "relations": "1",
        "hierarchy": "1",
        "multiple": "1",
        "required": "0",
        "tags": "1",
        "module": "taxonomy",
        "weight": "7",
        "nodes": {
            "hidrupal": "hidrupal",
            "page": "page",
            "recipee": "recipee",
            "story": "story"
        },
        "uri": "http://andrd.yarrait.com/drupal6/android/vocabulary/45"
    },
    {
        "vid": "48",
        "name": "sample",
        "description": "asldfawi iawbfuiasguda jasbf jasfujad jashbdfajsdgawidba kjascbi9wa jhasbjabcuasv askjh bw ajs bjsbjda jsawioabfscja awjdbfuwga ajcsjfgjaw ajdfajs fj agfjweu8 ajsfbjw u",
        "help": "ajfawyg ahbcoiw ygajc jawhbu bua jagbwjwcwug ua jwsajwiuhcg ha bwujagua jajdwgugd uma jau wyg j h jja hg ug auj gwj",
        "relations": "1",
        "hierarchy": "1",
        "multiple": "1",
        "required": "0",
        "tags": "1",
        "module": "taxonomy",
        "weight": "7",
        "type": null,
        "nodes": [ ],
        "uri": "http://andrd.yarrait.com/drupal6/android/vocabulary/48"
    }
]

その中に2つのJSONArrayがあり、値を持つこともあればnullを持つこともある「ノード」オブジェクトがあるため、この「ノード」オブジェクトにnull値があることを確認する方法

このようにしてみます。確認して、この問題を解決する方法を教えてください JSONArray

mJSONArray = new JSONArray(response);

for (int i = 0; i < mJSONArray.length(); i++) 
{
  JSONObject mJSONObject = mJSONArray.getJSONObject(i);

  mArrayListName.add(mJSONObject.getString(Constant.VocabularyJsonKey.NAME));
  mArrayListvid.add(mJSONObject.getString(Constant.VocabularyJsonKey.VID));

    if(!mJSONObject.isNull(Constant.VocabularyJsonKey.CONTENT_TYPE))
    {
      JSONObject contentTypeJSONObject = mJSONObject.getJSONObject(Constant.VocabularyJsonKey.CONTENT_TYPE);
      JSONArray contentTypeJSONArray = contentTypeJSONObject.toJSONArray(contentTypeJSONObject.names());

      //for getting content types and set as comma separated string
      for (int j = 0; j < contentTypeJSONArray.length(); j++) 
      {
        if(j ==   contentTypeJSONArray.length()-1) 
           content_types = content_types.concat(contentTypeJSONArray.getString(j).toString());
        else 
          content_types = content_types.concat(contentTypeJSONArray.getString(j).toString() + ", ");
      }
    }
    mArrayListCtype.add(content_types);
}

ノードオブジェクトのnull値を取得したため、リストするときにエラーが発生しました。エラーは次の とおりです。 JSONObject.java:573)

4

4 に答える 4

0

タイプはあなたのJSON配列のこのようなものでなければならないと思います

[

//これが最初のオブジェクトです

{"カテゴリー":

{"cat_id": "1"、 "cat_title": "Advertising&Media"}}、

//これは2番目のオブジェクトです

{"カテゴリー":

{"cat_id": "2"、 "cat_title": "Automotive&Marine"}}

]

次のコードで取得します。

 for (int i = 0; i < jsonArray.length(); i++) {

                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String outerstr  = jsonObject.getString("category");

                    JSONObject json = new JSONObject(outerstr);

                    String id = json.getString("cat_id");
                    String title = json.getString("cat_title");

                    Log.i("title  ", title);                
                    Log.i("desc  ", id);

                    yourList.add( new yourClassObject(id,title));
                  }

                } catch (Exception e) {
                  e.printStackTrace();
                }
于 2012-10-09T10:35:24.727 に答える
0

nodes.length == 0 //空を試す

于 2012-10-09T09:04:54.377 に答える
0

ノードはJSONArrayではありませんか?? 2 番目のデータ セットに "nodes": [ ] があるためです。

これを使用して確認してください:

parentJSON.getJSONArray("nodes").length() == 0;

JSONObject チェックの場合:

parentJSON.getJSONObject("nodes").length() == 0;

JSONObject のメソッド length() は、JSONObject 内の NameValuePairs の数を示します。

于 2012-10-09T09:13:32.167 に答える
0
JsonObject!=null

このコードを試してください

于 2012-10-09T09:00:07.050 に答える