如何在C#中获取动态对象属性的列表 [英] How to get a list of dynamic object properties in c#

查看:578
本文介绍了如何在C#中获取动态对象属性的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有JSON对象(类似这样)及其动态的 jsonInput =

I have JSON object, something like this, and its dynamic, jsonInput=

{
    "CONTRATE":80,
    "SALINC":30,
    "RETAGE":67,
    "MARSTATUS":"single",
    "SPOUSEDOB":"1970-01-01",
    "VIEWOPTION":"pension"
}

我正在使用Newtonsoft.Json转换器将其转换为.NET动态对象:

I am converting it into .NET dynamic object using Newtonsoft.Json converter:

var jsonDynamic = JsonConvert.DeserializeObject<dynamic>(jsonInput);

现在我有了动态的jsonDynamic .NET对象.

Now I have dynamic jsonDynamic .NET object.

现在如何获取其属性? 这些应该是jsonDynamic.CONTRATE,jsonDynamic.SALINC等...

How can I get it's properties now? These should be jsonDynamic.CONTRATE, jsonDynamic.SALINC etc...

如何从jsonDynamic获取这些属性的名称?

How can I get the names of these properties from jsonDynamic?

谢谢.

推荐答案

var jobj = JObject.Parse(jsonInput);
dynamic jsonDynamic = jobj;

var dict = jobj.Children()
               .OfType<JProperty>()
               .ToDictionary(x => x.Name, x => x.Value);

int c = (int)dict["CONTRATE"];

或者如果只需要属性名称

or if you want only property names

var propNames = jobj.Children()
                    .OfType<JProperty>()
                    .Select(x => x.Name)
                    .ToList();

这篇关于如何在C#中获取动态对象属性的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆