【问题标题】:Android JSON parsing with a global JSON tag使用全局 JSON 标签解析 Android JSON
【发布时间】:2013-01-27 21:18:56
【问题描述】:

我正在开发一个 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/ 他们在开头有一个名为“联系人”的标签,这让他可以使用 JSONArray 循环所有内容并获取标签...... 我搞不清楚了。 如何解析这些数据?教程代码不起作用,因为我无法提取数组(至少我认为)。

【问题讨论】:

  • 数组必须有一个名字,如果没有..那么它是一个 JSON 对象。名称应该在第一个方括号之前。在此处粘贴您的网址,看看是否显示完整的内容jsonformat.com/#jsondataurllabel
  • 看起来它只是一个 JSON 对象。我能做些什么来解析单个对象吗?

标签: android json parsing tags


【解决方案1】:
 I am lost

首先,我想告诉你,在androidhive的例子中,jsonstring的root元素是jsonobject,你作为问题发布的jsonstring的root元素是jsonarray . 其次,不必总是在数组的开头有一个名称来使用它并从中提取数据。但是,在复杂的情况下肯定需要它,这也是好习惯

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

【讨论】:

  • 但是你不能不将类型从 JSONObject 切换到 JSONArray 吗?感谢您的帮助!
  • 我想我通过将解析类的返回类型更改为 JSONArray 来修复它,我会看看这是否有效!
  • 成功了!!!!!!非常感谢,我刚刚将解析类更改为 JSONArray 作为返回对象,它可以完美运行。
【解决方案2】:

你可以看this的帖子,好像你有类似的JSONArray..你可以简单地使用:

JSONArray yourArray = new JSONArray(jsonString);
// do the rest of the parsing by looping through the JSONArray

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多