我正在解析此链接中的 JSON 数据:
http://twyst.in/api/v1/near/30/30
由于数据太大,我在这里只发布(问题)相关数据:
{ "info": "[{\" socket \":{\"__v\":1,\"_id\":\"5316d59326b019ee59000026\",\"照片\":[],\"twyst_meta\":{\“recommend_list\”:[],\“评论\”:[]},\“outlet_meta\”:{\“链接\”:[],\“状态\”:\“活跃\”,\“帐户\":[\"531574eeae738d654c00000a\",\"535a1a1e827651ca03000122\"]},\"属性\":{\"dine_in\":true,\"户外\":true,\"空调\":\"否可用\"、\" parking 位\":\"可用\"、\"预订\":\"不需要\"、\"wifi\":\"不可用\"、\"标签\":[\"披萨\"、\"意大利面\"、\"意大利\"、\"Galleria\"、\"DLF 第 4 阶段\"]、\"payment_options\":[\"现金\"、\"amex\",\"签证\",\"大师\"],\"美食\":[\"意大利\",\"披萨\",\"冰淇淋\"],\"时间\":\"上午11点- 晚上 11 点\",\"cost_for_two\":{\"min\":3,\"max\":4}},\"links\":{\"other_urls\":[],\"youtube_url\":\"\"、\"twitter_url\":\"\"、\"facebook_url\":\"https://www.facebook.com/pages/Crusty-gourmet-pizza-more/390843954384130\",\"website_url\":\"\"},\"联系人\":{\"电子邮件\":{\"电子邮件\":\"bob_nugent56@yahoo.com\",\"人员\":\"\"},\"电话\":{\"号码\":\"\",\"固定电话\":\"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 开始之前存在双引号可能是此问题的根源吗?
谢谢。
最佳答案
info
不是数组或对象。它是一个字符串,恰好包含另一个数组的 JSON 编码表示形式。您必须获取该字符串并通过第二次 JSON 解码传递运行它:
JSONArray array = new JSONArray(object.getString("info"));
关于java - 解析 JSON 数据时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23846926/