0

私は Android プロジェクトに取り組んでおり、私の json 文字列は少し奇妙です。すべてのチュートリアルは、JSONArray を解析する必要があることを示していますが、私の JSON には配列名がありません。json の URL の例を次に示します。(私の理解では、[の前に「記事」のようなものが必要であると言っています

 [
 ///Something should be here
 {
    "id": 15483,
    "title": "Bilbo Baggins is Cool",
    "permalink": "http://example.com/2012/12/03/",
     "content": "Hello World",
    "date": "2012-12-03 00:04:08",
    "author": "Bilbo Baggins",
    "thumbnail": "http://example.com/wp-        content/uploads/2012/12/DSC02971.jpg",
    "categories": [
        "News"
    ],
    "tags": [
        "LOTR",
        "One Ring",
        "Patch",
        "Police Department"
    ]
}
]

この例のようにhttp://www.androidhive.info/2012/01/android-json-parsing-tutorial/のよう に、最初に「contacts」というタグがあり、JSONArrayを使用してすべてのコンテンツをループして取得できますタグ…迷ってます。このデータを解析するにはどうすればよいですか? 配列をプルできないため、チュートリアルコードは機能しません(少なくとも私は思います)。

4

2 に答える 2

1
 I am lost

まず、androidhiveの例で、jsonstringのroot要素が で、質問として投稿されたjsonstringの要素が であることをお伝えしたいと思いjsonobjectます。第二に、配列を消費してそこからデータを抽出するために、常に配列の先頭に名前を付ける必要はありません。rootjsonarray

How can I parse this data?

ルート要素が異なるため、データの消費方法を変更する必要があり、

androidhiveの例では、

    // Creating JSON Parser instance
JSONParser jParser = new JSONParser();

// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url); //look at the left side of assignment operator.here result is being consumed in JSONObject

try {
    // Getting Array of Contacts
    contacts = json.getJSONArray(TAG_CONTACTS);

    // looping through All Contacts
    for(int i = 0; i < contacts.length(); i++){
        JSONObject c = contacts.getJSONObject(i);

        // Storing each json item in variable
        String id = c.getString(TAG_ID);
        String name = c.getString(TAG_NAME);
        String email = c.getString(TAG_EMAIL);
        String address = c.getString(TAG_ADDRESS);
        String gender = c.getString(TAG_GENDER);

        // Phone number is agin JSON Object
        JSONObject phone = c.getJSONObject(TAG_PHONE);
        String mobile = phone.getString(TAG_PHONE_MOBILE);
        String home = phone.getString(TAG_PHONE_HOME);
        String office = phone.getString(TAG_PHONE_OFFICE);

    }
} catch (JSONException e) {
    e.printStackTrace();
}

質問として投稿したjsonstringはJSONArrayで消費でき、

    // Creating JSON Parser instance
JSONParser jParser = new JSONParser();

// getting JSON string from URL
JSONArray json = jParser.getJSONFromUrl(url); //look at the left side of assignment operator.here result is being consumed in JSONArray

try {
    // looping through All data
    for(int i = 0; i < json.length(); i++){
        JSONObject c = json.getJSONObject(i);

        // Storing each item in variable
        String id = c.getString("id");
        String title= c.getString("title");
        String permalink= c.getString("permalink");
        String content= c.getString("content");

    }
} catch (JSONException e) {
    e.printStackTrace();
}
于 2013-01-27T21:47:59.243 に答える
1

この投稿を見ることができます。同様の JSONArray があるようです。単純に使用できます。

JSONArray yourArray = new JSONArray(jsonString);
// do the rest of the parsing by looping through the JSONArray
于 2013-01-27T21:29:43.223 に答える