0

我正在从这个链接解析 JSON 数据:

http://twyst.in/api/v1/near/30/30

由于数据太大,我在这里只发布(问题)相关数据:

{ "信息": "[{\"出口\":{\"__v\":1,\"_id\":\"5316d59326b019ee59000026\",\"照片\":[],\"twyst_meta\": {\"recommend_list\":[],\"reviews\":[]},\"outlet_meta\":{\"links\":[],\"status\":\"active\",\"账户\":[\"531574eeae738d654c00000a\",\"535a1a1e827651ca03000122\"]},\"属性\":{\"dine_in\":true,\"户外\":true,\"air_conditioning\":\" Not Available\",\"parking\":\"Available\",\"reservation\":\"Not Required\",\"wifi\":\"Not Available\",\"tags\":[ \"Pizza\",\"Pasta\",\"Italian\",\"Galleria\",\"DLF Phase 4\"],\"payment_options\":[\"cash\",\"amex\",\"visa\",\"master\"],\"cuisines\":[\"Italian\",\"Pizza\",\ "Gelato\"],\"timings\":\"11 AM - 11 PM\",\"cost_for_two\":{\"min\":3,\"max\":4}},\"links \":{\"other_urls\":[],\"youtube_url\":\"\",\"twitter_url\":\"\",\"facebook_url\":\"\"\",\"twitter_url\":\"\",\"facebook_url\":\"\"\",\"twitter_url\":\"\",\"facebook_url\":\"https://www.facebook.com/pages/Crusty-gourmet-pizza-more/390843954384130 \",\"website_url\":\"\"},\"contact\":{\"emails\":{ \"email\":\"bob_nugent56@yahoo.com\",\"person\":\"\"},\"phones\":{\"number\":\"\",\"座机\ ":\"02355156616\",\"reg_mobile\":[{\"_id\":\"4639320000e4532779b17de7\",\"num\":\"9134000410\"}

这不是 JSON 数据的结束,它还在继续……

但是当执行以下代码行时,我得到一个 JSONException。e.printStackTrace() 方法告诉我有 typeMismatch 错误。

       JSONObject object = new JSONObject(str);        //1
       JSONArray array = object.getJSONArray("info");  //2 

我尝试用以下代码替换第 2 行:

      JSONObject newObject = object.getJSONObject("info");

但在这里我也遇到了同样的问题。

我检查了完整的数据,它是正确的,没有语法错误。有人可以帮我解决这个问题吗?在 JSONArray 开始之前存在双引号可以成为这个问题的根源吗?

谢谢。

4

2 回答 2

2

info不是数组或对象。它是一个字符串,恰好包含另一个数组的 JSON 编码表示。您将必须获取该字符串并通过第二次 JSON 解码传递运行它:

JSONArray array = new JSONArray(object.getString("info"));
于 2014-05-24T15:53:55.753 回答
0
JSONObject json;
Object     info;
JSONArray  infoJsonArray;
JSONObject infoObject;
json = new JSONObject(str);

Object info= json.get("info");
if (info instanceof JSONArray) {
// It's an array
infoJsonArray = (JSONArray)info;
}
else if (info instanceof JSONObject) {
// It's an object
infoObject = (JSONObject)info;
} else {
// It's something else, like a string or number
}
于 2014-05-24T16:01:20.273 回答