gpt4 book ai didi

c# - 动态 JContainer (JSON.NET) & 在运行时迭代属性

转载 作者:IT王子 更新时间:2023-10-29 04:37:09 29 4
gpt4 key购买 nike

我在 MVC4/.NET4 WebApi Controller 操作中收到一个 JSON 字符串。该操作的参数是 dynamic,因为我在接收端对接收到的 JSON 对象一无所知。

 public dynamic Post(dynamic myobject)        

JSON 被自动解析,生成的 dynamic 对象是 Newtonsoft.Json.Linq.JContainer。正如预期的那样,我可以在运行时评估属性,因此如果 JSON 包含类似 myobject.myproperty 的内容,那么我现在可以获取接收到的动态对象并在 C# 代码中调用 myobject.myproperty。到目前为止一切顺利。

现在我想遍历作为 JSON 一部分提供的所有属性,包括嵌套属性。但是,如果我执行 myobject.GetType().GetProperties(),它只会返回 Newtonsoft.Json.Linq.JContainer 的属性,而不是我正在寻找的属性(那是 JSON 的一部分)。

知道怎么做吗?

最佳答案

我认为这可以作为一个起点

dynamic dynObj = JsonConvert.DeserializeObject("{a:1,b:2}");

//JContainer is the base class
var jObj = (JObject)dynObj;

foreach (JToken token in jObj.Children())
{
if (token is JProperty)
{
var prop = token as JProperty;
Console.WriteLine("{0}={1}", prop.Name, prop.Value);
}
}

编辑

这也可能对你有帮助

var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(jObj.ToString());

关于c# - 动态 JContainer (JSON.NET) & 在运行时迭代属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652983/

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