Разбор ответа Google JSON в VB.NET - PullRequest
1 голос
/ 13 октября 2011

Я пытаюсь разобрать форму ответа JSON google.Это то, что у меня сейчас есть:

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 от Google: JSONОтвет

РЕДАКТИРОВАТЬ

Просто в целях продолжения: ошибка действительно выводится "": внутри узла pagemap на страницах facebook.Я прибег к вызову функции очистки следующим образом:

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

Если у кого-то есть способ получше, пожалуйста, дайте мне знать!

Еще раз спасибо.

1 Ответ

2 голосов
/ 13 октября 2011

Похоже, это бит JSON, с которым возникают проблемы:

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

Я не эксперт JSON, но я понимаю, почему это может быть удивлено.Как я уже упоминал, он может быть проанализирован Json.NET (по крайней мере, как JObject), поэтому вы можете попробовать использовать его вместо этого.


Оригиналответ, по-прежнему актуален

Метод DeserializeObject указывает:

Этот метод десериализации не пытается привести корень графа объекта кспецифический тип, как и в случае метода десериализации.

Так что я бы удивился, если бы ему все равно удалось привести к gResponseClass.Вы пытались использовать метод Deserialize вместо этого?

(я бы ожидал, что ошибка времени компиляции будет честной - есть ли у вас строгий и явный параметр?)

Вполне возможно, это не та проблема, с которой вы столкнулись, но это первое, на что я бы все-таки посмотрел :) JSON хорошо разбирается с JSON.NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...