我正在尝试解析谷歌的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* ...
我可以实施任何明显的问题或解决方案吗?
编辑:
来自Google的JSON回复:JSON Response
修改
仅用于延续目的:错误确实由Facebook页面上"":
节点内的pagemap
来设置。我已经使用如下调用清理函数:
json = json.Replace(""""":", """page_id"":")
Return json
如果有人有更好的方法,请告诉我!
再次感谢。
答案 0 :(得分:2)
看起来这是它遇到问题的JSON:
"": [
{
"page_id": "66721388277"
}
],
我不是JSON专家,但我可以理解为什么会对此感到惊讶。正如我所提到的,它可以由Json.NET解析(至少作为JObject
),因此您可能希望尝试使用它。
原始答案,仍然相关
DeserializeObject
方法指定:
这种反序列化方法不会尝试将对象图的根转换为特定类型,就像使用Deserialize方法一样。
如果它设法转换为gResponseClass
,我会感到惊讶。您是否尝试过使用Deserialize
方法?
(我原本以为编译时错误是诚实的 - 你有明确的选项和选项吗?)
这可能不是你面临的问题,但这是我第一眼看到的东西:) JSON用JSON.NET解析好。