2014-12-19 32 views
1

我有一些JSON從一個Web服務來是這樣的:JSON字符串VB.net對象與嵌套列表

{ 
    "disclaimer": "Exchange r..", 
    "license": "Data sourced from variou..", 
    "timestamp": 1262365200, 
    "base": "USD", 
    "rates": { 
    "AED": 3.67275, 
    "AFN": 48.550089, 
    "ALL": 96.435505, 
    "AMD": 377.894224, 
    "ANG": 1.791, 
    "AOA": 89.174867, 
    "ARS": 3.79928 
    } 
} 

我已經建立了一個小班級接受它。

Class currencyValues 

     Class ratePairs 
      Property currencyCode 
      Property currencyValue 
     End Class 

     Property disclaimer 
     Property license 
     Property timestamp 
     Property base 
     Property rates As New List(Of ratePairs) 

    End Class 

當我運行代碼接受JSON到類中它需要頂級屬性,但沒有填充ratePairs的列表。

Dim js As New System.Web.Script.Serialization.JavaScriptSerializer() 
    Dim recs = js.Deserialize(Of currencyValues)(curRecordJSON) 

list recs.Rates的計數爲零。

我在做什麼錯?

+0

json中的'rates'不是一個數組,因此不能被反序列化爲一個列表。它實際上是一個對象,具有諸如'AED'和'AFN'等屬性。您可以將它反序列化爲一個'Dictionary(Of String,Double)' – 2014-12-19 11:30:31

+0

@JamesThorpe就是這樣!哦,你很好。請作爲答覆發佈,我會接受。 – bendecko 2014-12-19 12:14:36

回答

1

原始json中的rates屬性不是數組,因此無法反序列化爲列表。

它實際上是一個對象,它如AEDAFN等,你都能夠deserialise它作爲Dictionary(Of String, Double),或者性質不會改變,你可以建立一個類來保存它的屬性:

Class Rates 
    Property AED 
    Property AFN 
    'etc 
End Class 
+0

這些是貨幣,我猜他們可能會更多或更少(例如歐元合併新成員國)並隨時間而改變,所以詞典解決方案對我來說是最好的。謝謝。 – bendecko 2014-12-19 12:32:19

相關問題