2015-04-12 44 views
2

我想用C#動態反序列化下面的JSON到數組:如何使用c#動態反序列化數組?

[ 
    { 
    "itemId":"15", 
    "quantity":101, 
    "eventTimestamp":"00000000-0000-0000-0000-000000000000", 
    "salesChannel":"1", 
    "unlimitedQuantity":false 
    }, 
    { 
    "itemId":"15", 
    "quantity":101, 
    "eventTimestamp":"00000000-0000-0000-0000-000000000000", 
    "salesChannel":"2", 
    "unlimitedQuantity":false 
    } 
] 

我已經嘗試了兩種不同的方法,但沒有成功:

dynamic itemsBalance = JObject.Parse(content); 

var itemBalanceType = new { 
    itemId = "", quantity = 0, eventTimestamp = "", salesChannel = "" 
}; 
var itemsBalance = JsonConvert.DeserializeAnonymousType(content, itemBalanceType); 

我目前使用C#動態與所有其他反序列化,並且不想爲每個響應創建類。 有沒有辦法做到這一點?

感謝

回答

0

我找到了一個解決方案:

JArray itemsBalance = JArray.Parse(content); 
if (itemsBalance != null) 
{ 
    for (int i = 0; i < itemsBalance.Count; i++) 
    { 
     string itemBalanceJSON = itemsBalance[i].ToString(); 
     dynamic itemBalance = JObject.Parse(itemBalanceJSON); 
     lbxResponse.Items.Add(itemBalance.itemId + " - " + itemBalance.salesChannel +": " + itemBalance.quantity.ToString()); 
    } 
} 

如果有什麼更好的,請讓我知道...

0

你可以用的代碼數量少做:

dynamic result = JsonConvert.Deserialize(content); 
foreach(var entry in result) 
{ 
    lbxResponse.Items.Add(entry.itemId + " - " + entry.salesChannel + ": " + entry.quantity); 
}