JSON解析。 JAVA位于第2位的意外字符(t)

时间:2013-02-22 14:19:31

标签: java json parsing

我正在尝试解析谷歌地图搜索中的JSON数据。 我已经尝试了JACKSON和现在我正在尝试JSON SIMPLE。它们都给出了同样的错误。

首先,我正在Google地图上进行搜索。

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 =健身房..............等等。 我正在取代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。

世界上我做错了什么。

谢谢!

5 个答案:

答案 0 :(得分:8)

正如其他人已经提到的,非引用字段名称不是标准JSON。然而,杰克逊(以及其他人)有set of option settings允许它使用非标准但常见的JSON衍生物:

JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES

将启用未加引号的字段名称处理。

答案 1 :(得分:2)

响应无效JSON,因为密钥名称未引用双引号。

答案 2 :(得分:2)

  

{title:“斯德哥尔摩健身房”

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

{"title":"stockholm Gym" 

请注意title双引号

包围"的方式

答案 3 :(得分:2)

您正在撤回用于maps.google.com网站的Javascript 代码

该响应中可能有任何Javascript代码,而不仅仅是恰好在搜索过程中返回的JSON。

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

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

这将只返回JSON数据。

查看Google Maps API了解更多选项。

答案 4 :(得分:0)

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

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

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
    int num;
    struct node *next;
} node;

typedef struct list
{
    node *ptr;
    struct list *next;
} list;

int main()
{
    list *p = malloc(sizeof(list));
    //p->ptr->num = 5;

    node *x;
    x = p->ptr;
    //x->num = 5;   

    return 0;
}

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

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    DirectCast(PrintPreviewDialog1, Form).WindowState = FormWindowState.Maximized
    PrintPreviewDialog1.ShowDialog()

End Sub

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

    Dim printtext As String = vbCrLf + vbCrLf + vbCrLf + _
"File Number        : " + TextBox1.Text + vbCrLf + vbCrLf + _
"Company Name : " + TextBox2.Text + vbCrLf + vbCrLf + _
"Description         : " + TextBox3.Text + vbCrLf + vbCrLf
    ' Do something e.g.
    e.Graphics.DrawString(printtext, New Font("Arial", 12, FontStyle.Bold), _
      Brushes.Black, 10, 10)
    e.HasMorePages = False

End Sub