0

我有一个从这个页面检索一些 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 项目的名称和地址以将其转换为餐厅对象?

4

1 回答 1

4

JSON 格式错误。请参考此链接,正确的代码如下。你会知道该怎么做。

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();
    }
}
于 2013-09-22T06:52:29.427 回答