c# Json动态对象

本文关键字:对象 动态 Json | 更新日期: 2023-09-27 18:10:22

我正在使用一个Json动态对象

这是我用来从对象中获取数据的方法:

string = obj.item.today.price;

这工作得很好,问题是,一旦我不得不开始使用数字示例:

string = obj.daily.10000;

显示错误

有办法解决这个问题吗?

c# Json动态对象

这是不可能的" call 10000 on daily object "只是因为10000不是一个有效的标识符。

让我解释一下这里发生了什么:

JSON解析器生成一些运行时类型,继承自一些基本JSON类型(例如JsonObject)。所以,obj是某种生成的类型,你对它调用属性item,它返回类似的生成类型,然后你调用today属性,等等。

最后一步很奇怪,在任何类型上都不能有10000属性,无论是否生成

但是,如果库支持对对象的键值访问,您可以尝试写

obj.daily["10000"]

或将obj转换为JObject(假设您正在使用JSON.NET)并调用属性方法:

var jsonObject = (JObject) obj;
var propertyValue = jsonObject.Property("10000").Value;

如果您使用Json。净

string json = "{ dayly : { 1000 : 'asd' } }";
dynamic d = JsonConvert.DeserializeObject(json);
Console.WriteLine((d.dayly as JObject).Property("1000").Value);