2015-04-12 38 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); 
}