2011-10-13 4 views
1

Je suis en train d'analyser le formulaire de réponse JSON google. Voilà ce que j'ai actuellement:Parse Google réponse JSON dans VB.NET

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 comme suit ici: PasteBin

Je continue à recevoir l'exception suivante jeté:

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

Y at-il des problèmes flagrants ou des solutions que je pouvais mettre en place?

EDIT:

La réponse JSON de Google: JSON Response

EDIT

Juste à des fins de continuation: les erros est tubé en effet par le "": à l'intérieur du nœud pagemap sur les pages facebook . J'ai eu recours à l'appel d'une fonction de nettoyage comme suit:

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

Si quelqu'un a une meilleure façon, s'il vous plaît laissez-moi savoir!

Merci encore.

+0

Avez-vous regardé le JSON? Pourriez-vous l'inclure ici? –

+0

@ JonSkeet - Salut Jon, je ne peux pas croire que vous commenter sur ma question! * shock * J'ai ajouté la réponse selon l'exemple en cherchant "fleurs". – f0x

Répondre

2

Il ressemble à ceci est le peu de JSON, il a de la difficulté avec:

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

Je ne suis pas un expert JSON, mais je peux voir pourquoi il pourrait être surpris par cela. Comme je l'ai mentionné, il peut être analysé par Json.NET (au moins en tant que JObject), donc vous pouvez essayer d'utiliser cela à la place.


réponse originale, toujours d'actualité

La méthode DeserializeObject spécifie:

Cette méthode de désérialisation ne cherche pas à jeter la racine du graphe d'objet à un type spécifique, comme la méthode Deserialize.

Donc, je serais surpris s'il réussissait à diffuser vers gResponseClass de toute façon. Avez-vous essayé d'utiliser la méthode Deserialize à la place?

(j'aurais attendu une erreur de compilation pour être honnête - ce que vous avez l'option stricte et l'option explicite?)

qui pourrait bien ne pas être le problème que vous êtes confronté, mais il est le premier chose que je regarderais de toute façon :) Le JSON analyse bien avec JSON.NET.

+0

merci Jon, je vais essayer JSON.NET. J'ai également essayé 'Deserialize' aussi - Mise à jour ma question. – f0x

+0

wow.c'était en effet la réponse JSON. C'était le seul endroit où je n'ai pas regardé parce que j'ai _assumed_, ma faute que google json ne serait pas me donner des tracas! changé le paramètre de recherche et fonctionne bien avec 'Deserialize'. Avez-vous des conseils pour éviter ce problème? – f0x

+0

@ f0x: Pas du tout, j'ai peur. J'ai presque aucune expérience avec JSON ... –