如何在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();