将JSON中的多个项解析为数组

时间:2013-09-22 06:35:05

标签: java json

我有一个客户端从该页面检索一些json。 json内容如下所示:

{
  "0": {
    "name": "McDonalds 2",
    "address": "892 West 75th Street, Naperville, IL 60540"
  },
  "1": {
    "name": "McDonalds 1",
    "address": "1298 South Naper Boulevard, Naperville, IL 60540"
  },
  "2": {
    "name": "Burger King 1",
    "address": "2040 Aurora Avenue, Naperville, IL, 60540"
  }
}

我在解析它时遇到问题。在尝试解析任何东西时我总是遇到异常。这是我第一次做json,所以我可能会做一些非常糟糕的事情。这是我的代码:

public static void parse(String jsonData)
    {
         JSONObject jsonObject = new JSONObject();
         try 
         {
                jsonObject = new JSONObject(jsonData);
         } 
         catch (JSONException e) 
         {
                e.printStackTrace();
         }

         try 
         {
             // exception happens here when trying to access data
             JSONObject name = ((JSONArray)jsonObject.get("0")).getJSONObject(0)
                        .getJSONObject("name");

             JSONObject address = ((JSONArray)jsonObject.get("0")).getJSONObject(0)
                        .getJSONObject("address");

         } catch (JSONException e) {}
    }

如何检索每个json项目的名称和地址以将其转换为餐馆对象?

1 个答案:

答案 0 :(得分:4)

JSON的格式错误。请参阅this link,正确的代码如下。你会知道该怎么做。

public static void parse(String jsonData) {
    ArrayList<Restaurant> restaurantList= new ArrayList<Restaurant>();
    JSONObject jsonObject;
    JSONObject jsonRestaurant;

    try {
        jsonObject= new JSONObject(jsonData);
        for(int i=0;i<3;i++) {
            Restaurant restaurant= new Restaurant();
            jsonRestaurant= jsonObject.getJSONObject(Integer.toString(i));
            restaurant.name= jsonRestaurant.getString("name");
            restaurant.address= jsonRestaurant.getString("address");
            restaurantList.add(restaurant);
        }
    }
    catch(JSONException e) {
        e.printStackTrace();
    }
}