gpt4 book ai didi

c# - 将json字符串反序列化为C#匿名数组

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:36 25 4
gpt4 key购买 nike

var data1 = new[] { 
new { Product = "Product 1", Year = 2009, Sales = 1212 },
new { Product = "Product 2", Year = 2009, Sales = 522 },
new { Product = "Product 1", Year = 2010, Sales = 1337 },
new { Product = "Product 2", Year = 2011, Sales = 711 },
new { Product = "Product 2", Year = 2012, Sales = 2245 },
new { Product = "Product 3", Year = 2012, Sales = 1000 }
};
string jsondata =JsonConvert.SerializeObject(data1);

我想做的是将 jsondata 反序列化为与 data1 中相同的对象(匿名类型的 C# 数组{string Product, int Year, int Sales})

我试过没有成功..

var dataj = JsonConvert.DeserializeObject<JArray>(jsondata);
var data = dataj.ToArray();

我怎么知道..因为下面的代码不起作用,尽管它适用于原始的 C# array(data1)

foreach (var d in data)
{
int a = d.Year;
}

如果不创建单独的类,我可以这样做吗..

最佳答案

您需要使用 dynamic 关键字,因为 Year 实际上不是 JToken 的属性。运行时绑定(bind)器可以通过内省(introspection) JToken 来检索值。

这是唯一需要更改的行:

dynamic data = dataj.ToArray();

在你的原始代码中,类型是匿名的,但这并不意味着它不知道它有什么属性。

关于c# - 将json字符串反序列化为C#匿名数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40156811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com