我正在尝试解析谷歌地图搜索中的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。
世界上我做错了什么。
谢谢!
答案 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