0

Google マップ検索から JSON データを解析しようとしています。JACKSON の両方を試しましたが、今は JSON SIMPLE を試しています。どちらも同じエラーが発生します。

まずはグーグルマップで検索。

String urlString = "http://maps.google.com/maps?f=q&source=s_q&output=json&start=0&q="+ "Stockholm" + "+Gym";

JSON を取得 while(1);{title:"stockholm Gym - Google Maps",url:"/maps?f=q\x26source=s_q\x26start=0\x26q=stockholm+Gym\x26ie=UTF8\x26hq=Gym ..............など. 文字列を返す前に、while(1); を ""; に置き換えます。

解析しようとしているときの問題に

JSONParser parser = new JSONParser();

    String jsonString = "";

// UriHandler.mapSearchJson は jsonString を返すメソッドです。

    String jsonData = UriHandler.mapSearchJSON(jsonString);

    Object obj = "";
    try {

        obj = parser.parse(jsonData);

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    JSONObject jsonObj = (JSONObject) obj;

    String title = (String) jsonObj.get("title");
    System.out.println(title);

これは私に例外を与えます。位置 2 に予期しない文字 (t) があります。

デバッグしているとき。文字列を解析しようとしているときにずっと来ます。obj は = null です。

私は何を間違っているのですか。

ありがとう!

4

5 に答える 5

8

他の人がすでに述べたように、引用符で囲まれていないフィールド名は標準の JSON ではありません。ただし、Jackson (およびおそらく他のユーザー) には、非標準ではあるが一般的な JSON 派生物を使用できるようにする一連のオプション設定があります。

JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES

引用符で囲まれていないフィールド名の処理を有効にします。

于 2013-02-22T14:24:23.630 に答える
2

サイトで使用することを目的としたJavascriptコードをプルバックしています。maps.google.com

その応答には、検索の一部としてたまたま返されるJSONだけでなく、任意のJavascriptコードが含まれている可能性があります。

代わりに、マップAPIからリクエストする必要があります。

http://maps.googleapis.com/maps/api/geocode/json?address=Stockholm+Gym&sensor=false

これにより、JSONデータのみが返されます。

その他のオプションについては、GoogleMapsAPIをご覧ください。

于 2013-02-22T14:25:51.430 に答える
2

キー名が二重引用符で囲まれていないため、応答は有効な JSON ではありません。

于 2013-02-22T14:21:08.910 に答える
2

{title:"ストックホルム ジム"

は無効な JSON です。次のようにする必要があります。

{"title":"stockholm Gym" 

が二重引用符titleで囲まれていることに注意してください"

于 2013-02-22T14:21:49.597 に答える