2012-05-08 3 views
2

Je travaille sur un projet ASP classique et j'utiliser ASP Xtreme Evolution pour analyser les données JSON (trouvés ici: http://zend.lojcomm.com.br/entries/classic-asp-json-revisited/)JSon en classique Parsing ASP avec ASP Xtreme Evolution

Quoi qu'il en soit ... je deviens la plupart des données JSon correctement, mais maintenant je suis coincé sur un tableau.

JSON ressemble à ceci:

{ 
    "Product": { 
    "ID": "6666", 
    "Name": "Tha name", 
    "ArticleGroup": [ 
     { 
     "@handleas": "array", 
     "Title": "Title 1", 
     "Article": { 
      "ID": "777", 
      "Label": "Label 1", 
     } 
     }, 
     { 
     "@handleas": "array", 
     "Title": "Title 2", 
     "Article": { 
      "ID": "888", 
      "Label": "Label 2", 
     } 
     } 
    ] 
    } 
    } 
} 

Et l'ASP se présentent comme suit:

set xmlHTTP = server.createobject("MSXML2.ServerXMLHTTP.6.0") 
xmlHTTP.open "GET", "http://source.of.json", false 
xmlHTTP.send() 
ProductFeed = xmlHTTP.ResponseText 

dim ProductInfo : set ProductInfo = JSON.parse(join(array(ProductFeed))) 

    dim key : for each key in ProductInfo.Product.keys() 
     Response.Write ProductInfo.Product.ID ' Prints 6666 
     Response.Write ProductInfo.Product.Name ' Prints Tha Name 
    Next 
    set ProductInfo = nothing 

Mon problème est que je ne peux pas comprendre comment accéder aux informations dans Articlegroup. Tout ce que je reçois est [objet objet], [objet objet] ou une valeur vide.

Vous avez des idées?

Merci!

Répondre

2

Effectuez les opérations suivantes (en fonction de la donnée JSON):

Dim ArticleGroup 

dim key : For Each key in ProductInfo.Product.keys() 
    Response.Write ProductInfo.Product.ID ' Prints 6666 
    Response.Write ProductInfo.Product.Name ' Prints Tha Name    

    For Each ArticleGroup In ProductInfo.Product.Get("ArticleGroup") '' iterate all ArticleGroup entries 
     Response.write ArticleGroup.Get("Title") '' get the correct key value 
    Next 
Next 

Vous devez itérer toutes les entrées de Articlegroup et obtenir la valeur par .get(keyName). Sinon, il retournera le corps de la fonction JScript à la place.

+0

Cela fonctionne très bien! Savez-vous aussi comment utiliser quand "ArticleGroup" ne contient qu'un seul sous-groupe? La fonction "For Each" renvoie une erreur lorsque le groupe d'articles i est inférieur à deux. – Rreh

+0

Je ne reçois pas d'erreur avec un seul articleGroup. Pourriez-vous fournir un exemple JSON qui échoue? –

+0

Désolé je pense que je n'étais pas un peu clair. Je ment quand le groupe d'articles en a seulement un: { "@handleas": "tableau", "Titre": "Titre 2", "Article": { "ID": "888", "Libellé": "Label 2", } – Rreh