2012-05-08 59 views
2

我工作的一個傳統的ASP項目,我用ASP的Xtreme進化解析JSON數據(這裏找到:http://zend.lojcomm.com.br/entries/classic-asp-json-revisited/解析JSON在傳統的ASP與ASP的Xtreme演進

反正......我越來越大部分的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少於2時,「For Each」功能會引發錯誤。 – Rreh

+0

我在onlt一個ArticleGroup上沒有出現錯誤。你能提供失敗的JSON例子嗎? –

+0

對不起,我覺得我有點不清楚。當文章組僅有一個時:「@handleas」:「array」, 「標題」:「標題2」, 「文章」:{ 「ID」:「888」, 「標籤」: 「標籤2」, } – Rreh