2015-04-07 153 views
0

我使用返回JSON的API。我在訪問元素時遇到問題,因爲它們不在數組中。JSON數組中的訪問元素

我的JSON是這樣的:

在2的JSON,我可以

[email protected]@ 

但是訪問的元素,當我使用的1 JSON,我得到以下例外:

Additional information: Newtonsoft.Json.Linq.JProperty does not contain a definition for Traject 
+0

再次檢查您的JSON,看來第二個條目實際上是嵌套在第一個條目中,因此它爲什麼無法訪問。 (除非我瘋了) - 也不應該是dataJson.Storingen.Gepland.Storing。@ elementName @? - '隨時發佈pastebin上的原始JSON,我會看看它。' – Idiot211

+0

我犯了錯誤。 2號作品,但1不,但我仍然不知道如何修復它 這是我無法訪問元素的JSON:http://pastebin.com/NsL2txnx 這是一個它的作品http://pastebin.com/eFc1JUWv – user2274356

+0

請參閱[「應該問題包括」標籤「在他們的標題?」](http://meta.stackexchange.com/questions/19190/should-questions-include-標籤在他們的標題),其中共識是「不,他們不應該」! –

回答

1

該圖片上的兩個JSON是n在架構上類似。第一個有一個嵌套的「存儲」對象,它有幾個屬性,但在第二種情況下,「存儲」成爲一個對象數組。您嘗試映射的對象模型是否有可能嘗試將此數組解析爲單個對象?

如果是這樣,那麼我認爲您需要將模型中「存儲」類型更改爲數組。你將能夠獲得的元素則是這樣的: dataJson.Storingen.Ongepland.Storing[0][email protected]@

+0

我完全錯過了,好點! – Idiot211

0

我知道這是一個古老的職位,但我想也許我可以分享在這個問題上1號,我相信我的想法,只是從以防有人未來看到這一點。

1st。創建兩個類如下:

public Storing Test {get; set;} 

public class Storing 
{ 
    public string id {set; get;} 
    public string Traject {set; get;} 
    public string Periode {set; get;} 
} 

2nd。在主程序中,反序列化JSON並調用對象,因此

TestCase list = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<TestCase>(*your web API uri*); 

Console.WriteLine ("id:{0}, Traject{1}, Periode{2}", list.Id, list.Traject, list.Periode); 
1

第二個json的結構與第一個不同。 在第二種情況下,您應該使用dataJson.Storingen.Ongepland.Storing[0][email protected]來訪問您想要的屬性。

但是,如果你希望你的數組中捲起,只是使用for