如何使用 C# 动态反序列化数组



我正在尝试使用 C# 动态将以下 JSON 反序列化为数组:

[
  {
    "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# 动态与所有其他反序列化一起使用,并且不想为每个响应创建类。有什么办法可以做到这一点吗?

谢谢

我找到了一个解决方案:

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());
    }
}

如果有更好的,请告诉我...

你可以用更少的代码来完成:

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

相关内容

  • 没有找到相关文章

最新更新