2012-05-08 2 views
2

Я работаю на классический ASP-проект, и я использую ASP Xtreme Evolution для анализа данных JSON (найти здесь: http://zend.lojcomm.com.br/entries/classic-asp-json-revisited/)Синтаксический JSon в классический ASP с ASP Xtreme Evolution

... Во всяком случае я получаю большинство JSon-данных правильно, но теперь я застрял в массиве.

JSon выглядит следующим образом:

{ 
    "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", 
     } 
     } 
    ] 
    } 
    } 
} 

И ASP выглядеть следующим образом:

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 

Моя проблема в том, что я не могу понять, как получить доступ к информации в ArticleGroup. Все, что я получаю, это [object Object], [object Object] или пустое значение.

У кого-нибудь есть идеи?

Thanx!

ответ

2

Попробуйте следующее (на основании данного 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 

Вам нужно перебирать все записи ArticleGroup и получить значение через .get(keyName). В противном случае он вернет тело функции JScript.

+0

Он отлично работает! Вы также знаете, как использовать, когда «ArticleGroup» содержит только одну подгруппу? Функция «Для каждой» выдает ошибку, когда ArticleGroup i меньше двух. – Rreh

+0

У меня нет ошибки с onlt одной ArticleGroup. Не могли бы вы привести пример JSON, который не прошел? –

+0

Извините, я думаю, что немного неясно. Если в ArticleGroup есть только одна: { "@handleas": "array", "Title": "Title 2", "Статья": { "ID": "888", "Ярлык": «Метка 2», } – Rreh

Смежные вопросы