2013-04-13 5 views
0

Nouveau JSON, je l'ai appris à faire rognures JSON de base (apprentissage de cette question et les réponses. How to Parse Json children in VB.NET NewtonsoftComment Parse enfants Json dans VB.NET Newtonsoft (suivi)

Merci à cette question et réponse j'ai réussi à lire des données similaires en utilisant VB.Net

Mais mes données sont légèrement différentes ce qui vient aux sous-articles - il a des crochets supplémentaires et je n'ai pas trouvé un moyen de lire les sous-éléments. Ps: J'ai modifié le Json dans la question originale pour le démontrer -

"CcFull": [ 

    [  
     { 
      "Email": "[email protected]", 
      "Name": "John Sample" 
     } 
    ] , 
    [ 
      { 
      "Email": "[email protected]", 
      "Name": "Mike Sample" 
       } 
    ] 
], 

Répondre

1

Étant donné que votre JSON est légèrement différent de celui auquel j'ai répondu dans la question référencée, vous devez analyser les choses un peu différemment.

Votre objet "CcFull" est en réalité un tableau de tableaux, désigné par les parenthèses [ et ]. Puisque le premier symbole après le signe deux-points est un crochet ouvert, il indique un tableau. Le symbole suivant est également un crochet ouvert, donc c'est un tableau de tableaux.

Pour déréférencer ceci avec les objets Json.Net, nous devons obtenir la valeur de l'élément comme objet JArray. Nous pouvons alors itérer sur les valeurs du tableau dans cet objet, comme dans l'autre question. Quelque chose comme ceci:

Dim results As List(Of JToken) = o.Children().ToList 
For Each item As JProperty In results 
    item.CreateReader() 
    Select Case item.Name 
     Case "CC" 
      Dim strCC = item.Value.ToString 

     Case "CcFull" 
      Dim ccArray As JArray = item.Value 'Get the top-level array 
      Dim strEmail As String 
      Dim strName As String 
      For Each subitem As JObject In ccArray.Values 
       strEmail = subitem("Email") 
       strName = subitem("Name") 
      Next 
    End Select 
Next 
+0

Bob, merci beaucoup - cela a fonctionné tout de suite. – meteli

+0

De rien. Je suggère que, lorsque vous obtenez une réponse correcte à une question, vous la marquez comme "acceptée" en cliquant sur la coche sous la réponse. C'est la pratique générale comme indiqué ici: http://stackoverflow.com/about. Il donne aux personnes qui répondent aux points de réputation et répand le bon karma. –