2011-10-13 131 views
1

我试图解析JSON响应表单google。这是我目前有:在VB.NET中解析Google JSON响应

Dim x As New System.Web.Script.Serialization.JavaScriptSerializer 
Dim gJson As String = "" 

Dim wClient As New WebClient 
wClient.Proxy = System.Net.HttpWebRequest.DefaultWebProxy 
gJson = wClient.DownloadString("https://www.googleapis.com/...alt=json") 
Dim results As gResponseClass = x.Deserialize(Of gResponseClass)(gJson) 

gResponseClass如下位置:PasteBin

我不断收到以下异常抛出:

Invalid object passed in, member name expected. (6678): .... *the json response here* ...

是否有任何公然问题或解决方案,我可以实行?

编辑

从谷歌JSON响应:JSON Response

编辑

只是为了延续用途:该错误回报确实套管由"":在Facebook上的页面pagemap节点内。我已经使出调用清理功能如下:

json = json.Replace(""""":", """page_id"":") 
Return json 

如果任何人有一个更好的办法,请让我知道!

再次感谢。

+0

你看过JSON吗?你能把它包括在这里吗? –

+0

@JonSkeet - 嗨乔恩,不能相信你会对我的问题发表评论! *休克*我已经添加了响应按照搜索“花朵”的示例。 – f0x

回答

2

它看起来这是它遇到问题的JSON的位:

"": [ 
{ 
    "page_id": "66721388277" 
} 
], 

我不是一个JSON的专家,但我可以看到为什么它可能是由感到惊讶。正如我所提到的,它可以被Json.NET解析(至少作为JObject),所以你可能想尝试使用它。


原来的答复,还是相关

DeserializeObject方法规定:

这种反序列化方法不尝试将对象图的根转换为特定类型,如反序列化方法。

所以我会很惊讶,如果它设法投到gResponseClass无论如何。您是否尝试过使用Deserialize方法?

(我会预期编译时错误是诚实的 - 你有选择的严格和明确的选项?)

这很可能不是你面临的问题,但它是第一个事情我会看看:) JSON解析与JSON.NET很好。

+0

感谢Jon,我会尝试JSON.NET。我也尝试过'反序列化' - 更新了我的问题。 – f0x

+0

哇。这确实是JSON的回应。这是我唯一没有看到的地方,因为我_assumed_,我的错,谷歌json wouldnt给我麻烦!改变了搜索参数,并且与'Deserialize'一起使用。你有避免这个问题的提示吗? – f0x

+0

@ f0x:恐怕没有。我几乎没有JSON的经验...... –