使用不同数量的密钥解析JSON文件

时间:2014-05-12 14:49:00

标签: android json parsing arrays jsonobject

我的JSON文件包含具有相同键的字符串,但其中一些字符串显示为某些字符串。例如:

{
    "city": "CB1 2BH Cambridge",
    "addr": "Devonshire Road 1",
    "title": "Devonshire Arms",
    "phone": "+44 1223 6610"
},
{
    "city": "E8 1JH London",
    "addr": "Amhurst Road 90",
    "title": "Pembury Tavern",
    "web": "http://www.individualpubs.co.uk/pembury/"
},
{
    "web": "http://bandholmhotel.dk/",
    "title": "Bandholm Hotel",
},
{
    "city": "00100 Helsinki",
    "addr": "Pohjoinen Rautatiekatu 23",
    "title": "Helkan Baari",
    "country": "FI"
},

如何在android中正确解析它?

4 个答案:

答案 0 :(得分:1)

考虑到这是你的JSONArray,

尝试执行以下操作,

    for (int i = 0; i < jsonArray.length(); i++) {
         JSONObject jObj = (JSONObject) jsonProductArray.getJSONObject(i);
    String city = jObj.optString("city", "cityDefaultValue");
    String addr = jObj.optString("addr", "addDefaultValue");
    String title = jObj.optString("title", "titleDefaultValue");
    String phone = jObj.optString("phone", "phoneDefaultValue");
}

答案 1 :(得分:0)

一种可能的解决方案是使用模态类并使用Gson库来解析Json。

对于在Json

中找不到值的键,您可以在模态类中设置一些默认值

答案 2 :(得分:0)

使用json的键创建一个模型类,并使用gson将其解析为模型类。

A a = gson.fromJson(jsonRes.toString(),A.class);
here A is your model class and a is the instance of A

答案 3 :(得分:0)

您可以使用Gson库。 创建类似的东西

class SomeObjects {
@SerializedName("city")
private String mCity;
@SerializedName("addr")
private String mAddres;
...
}

然后

SomeObject obj = new Gson.fromJson(jsonString, SomeObject.class); 

你也可以直接进入数组