6

newsエントリには、、、およびの3つtitlecontentありますdate

エントリはデータベースから取得され、JSONObjectとJSONArrayを使用してアプリケーションで読み取りたいと思います。ただし、これらのクラスの使用方法がわかりません。

これが私のJSON文字列です:

[
   {
      "news":{
         "title":"5th title",
         "content":"5th content",
         "date":"1363197493"
      }
   },
   {
      "news":{
         "title":"4th title",
         "content":"4th content",
         "date":"1363197454"
      }
   },
   {
      "news":{
         "title":"3rd title",
         "content":"3rd content",
         "date":"1363197443"
      }
   },
   {
      "news":{
         "title":"2nd title",
         "content":"2nd content",
         "date":"1363197409"
      }
   },
   {
      "news":{
         "title":"1st title",
         "content":"1st content",
         "date":"1363197399"
      }
   }
]
4

2 に答える 2

8

あなたの JSON 文字列は、「ニュース」と呼ばれる 内部を含むものJSONArrayです。JSONObjectJSONObject

それを解析するためにこれを試してください:

JSONArray array = new JSONArray(jsonString);

for(int i = 0; i < array.length(); i++) {
    JSONObject obj = array.getJSONObject(i);
    JSONObject innerObject = obj.getJSONObject("news");

    String title = innerObject.getString("title");
    String content = innerObject.getString("content");
    String date = innerObject.getString("date");

    /* Use your title, content, and date variables here */
}
于 2013-03-14T14:18:42.680 に答える
2

まず第一に、あなたの JSON 構造は理想的ではありません。オブジェクトの配列があり、各オブジェクトには単一のオブジェクトが含まれています。ただし、次のように読むこともできます。

JSONArray jsonArray = new JSONArray (jsonString);
int arrayLength = jsonArray.length ();

for (int counter = 0; counter < arrayLength; counter ++) {
    JSONObject thisJson = jsonArray.getJSONObject (counter);

    // we finally get to the proper object
    thisJson = thisJson.getJSONObject ("news");

    String title = thisJson.getString ("title");
    String content = thisJson.getString ("content");
    String date = thisJson.getString ("date");

}

でも!

JSON を次のように変更すると、より良い結果が得られます。

[
    {
        "title": "5th title",
        "content": "5th content",
        "date": "1363197493"
    },
    {
        "title": "4th title",
        "content": "4th content",
        "date": "1363197454"
    }
]

次に、次のように解析できます。

JSONArray jsonArray = new JSONArray (jsonString);
int arrayLength = jsonArray.length ();

for (int counter = 0; counter < arrayLength; counter ++) {
        // we don't need to look for a named object any more
    JSONObject thisJson = jsonArray.getJSONObject (counter);    

    String title = thisJson.getString ("title");
    String content = thisJson.getString ("content");
    String date = thisJson.getString ("date");
}
于 2013-03-14T14:18:48.813 に答える