0

このリンクから JSON データを解析しています:

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

データが大きすぎるため、(問題の) 関連データのみをここに投稿します。

{ "info": "[{\"outlet\":{\"__v\":1,\"_id\":\"5316d59326b019ee59000026\",\"写真\":[],\"twyst_meta\": {\"recommend_list\":[],\"reviews\":[]},\"outlet_meta\":{\"links\":[],\"status\":\"active\",\"アカウント\":[\"531574eeae738d654c00000a\",\"535a1a1e827651ca03000122\"]},\"属性\":{\"食事\":true,\"屋外\":true,\"空調\":\"利用不可\",\"駐車場\":\"利用可能\",\"予約\":\"不要\",\"Wi-Fi\":\"利用不可\",\"タグ\":[ \"ピザ\"、\"パスタ\"、\"イタリアン\"、\"ガレリア\"、\"DLF フェーズ 4\"]、\"payment_options\":[\"cash\",\"amex\",\"visa\",\"master\"],\"料理\":[\"イタリアン\",\"ピザ\",\ "Gelato\"],\"タイミング\":\"午前 11 時~午後 11 時\",\"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\":{\"メール\":{ \"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 エンコード表現を含む文字列です。その文字列を取得し、2 番目の 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 に答える