0

我正在尝试从谷歌地图搜索中解析 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

响应不是有效的 JSON,因为键名没有用双引号引起来。

于 2013-02-22T14:21:08.910 回答
2

{标题:“斯德哥尔摩体育馆”

是无效的 JSON,应该是这样的:

{"title":"stockholm Gym" 

注意如何title"双引号包围

于 2013-02-22T14:21:49.597 回答
2

您正在撤回供该站点使用的 Javascript代码。maps.google.com

该响应中可能有任何 Javascript 代码,而不仅仅是作为搜索的一部分返回的 JSON。

您需要改为从他们的地图 API 请求:

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

这将只返回 JSON 数据。

查看Google Maps API以获取更多选项。

于 2013-02-22T14:25:51.430 回答
0

我在尝试解析从 kafka(kafka twitter 制作人)返回的 json 时遇到了这个错误。

返回的消息包含除 json (KeyedMessage(twitter-test_english,null,null)) 之外的一些额外文本。因此,我遇到了这个错误。

KeyedMessage(twitter-test_english,null,null,{"created_at":"Sat Apr 23 18:31:10 +0000 2016","id":723942306777337856,"id_str":"723942306777337856"}

仅从返回的 json 传递消息部分并将其转换为字符串。

{"created_at":"Sat Apr 23 18:31:10 +0000 2016","id":723942306777337856,"id_str":"723942306777337856"}

message = new KeyedMessage("twitter-test_english", (String)queue.take());
//System.out.println("This is message"+message.message());
String message_string = message.message().toString();
JsonParse.toParseJson(message_string);
于 2016-04-23T19:11:58.360 回答