2015-04-12 3 views
2

Я пытаюсь десериализации следующий JSON в массив с помощью C# динамики:Как десериализировать массив с использованием динамики 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); 
} 
Смежные вопросы