首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >动态JContainer (JSON.NET) &在运行时遍历属性

动态JContainer (JSON.NET) &在运行时遍历属性
EN

Stack Overflow用户
提问于 2012-12-01 04:51:27
回答 1查看 25.5K关注 0票数 21

我在MVC4/.NET4MVC4/.NET4 WebApi控制器操作中收到一个JSON字符串。该操作的参数是dynamic,因为我不知道接收端关于我正在接收的JSON对象的任何信息。

代码语言:javascript
复制
 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的一部分)。

你知道怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-01 04:58:21

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

代码语言:javascript
复制
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);
    }
}

编辑

这也可能对你有帮助

代码语言:javascript
复制
var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(jObj.ToString());
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13652983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档