0

次の問題があります: Android で解析しようとしているサーバーに JSON ファイルがあります。しかし、次のエラーメッセージが表示されます。

06-13 19:24:39.025: E/JSON パーサー (17169): データ org.json.JSONException の解析中にエラーが発生しました: タイプ java.lang.String の値  を JSONObject に変換できません

これが私のJSONファイルです:

    {
"settings":[
  {
     "rss":"true",
     "rss_feed":"http://test.com/rss.rss"
  }
],
 "map_locations":[
  {
     "title":"Büro Toronto",
     "address":"123 Younge Street Toronto"
  },
  {
     "title":"Büro New York",
     "address":"Time Square New York"
  }
]
}

そして、これは私のコードです:

        JSONParser jParser = new JSONParser();

        JSONObject json = jParser.getJSONFromUrl(SETTINGS_URL);

        try {
            JSONObject c = json.getJSONArray("settings").getJSONObject(0);

            rss = c.getBoolean("rss");

            JSONArray jMap = json.getJSONArray("map_locations");
            for (int i = 0; i < jMap.length(); i++) {
                JSONObject c2 = jMap.getJSONObject(i);

                String map_title = c2.getString("title");
                String map_address = c2.getString("address");

                mapListTitle.add(map_title);
                mapListAddress.add(map_address);
            }

            URL_TO_RSSFEED = c.getString("rss_feed");
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (NullPointerException e) {
            e.printStackTrace();
        }

事前に助けてくれてありがとう!

奇妙なことに、私は何も変更せず (私の知識では)、以前は機能していました。さらに情報が必要な場合はお知らせください。

4

2 に答える 2

2

うわー、私は答えを見つけました...変更しなければなりませんでした

BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);

to BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF-8"), 8);

奇妙なことに、同じ設定で数時間前に機能しました。

しかし、あなたの助けにたくさん感謝します!

于 2012-06-13T19:57:56.733 に答える
0

このコードを実行しましたが、正常に動作します。

String jsonStr = "{\"settings\":[{\"rss\":\"true\",\"rss_feed\":\"http://test.com/rss.rss\"}],\"map_locations\":[{\"title\":\"Büro Toronto\",\"address\":\"123 Younge Street Toronto\""
              +"},{\"title\":\"Büro New York\",\"address\":\"Time Square New York\"}]}";
    try {
    JSONObject json = new JSONObject(jsonStr);


        JSONObject c = json.getJSONArray("settings").getJSONObject(0);

        boolean rss = c.getBoolean("rss");

        JSONArray jMap = json.getJSONArray("map_locations");
        for (int i = 0; i < jMap.length(); i++) {
            JSONObject c2 = jMap.getJSONObject(i);

            String map_title = c2.getString("title");
            String map_address = c2.getString("address");

           /* mapListTitle.add(map_title);
            mapListAddress.add(map_address);*/
        }

       String URL_TO_RSSFEED = c.getString("rss_feed");
    } catch (JSONException e) {
        e.printStackTrace();
    } catch (NullPointerException e) {
        e.printStackTrace();  
}

したがって、作成している最初の行にいくつかのエラーがある可能性があると結論付けることができるだけであり、jsonObjectこの行について話している:

JSONObject json = jParser.getJSONFromUrl(SETTINGS_URL);

于 2012-06-13T18:24:08.757 に答える