我有JSON对象,就像这样,它的动态, jsonInput =
{
"CONTRATE":80,
"SALINC":30,
"RETAGE":67,
"MARSTATUS":"single",
"SPOUSEDOB":"1970-01-01",
"VIEWOPTION":"pension"
}
我使用Newtonsoft.Json转换器将其转换为.NET动态对象:
var jsonDynamic = JsonConvert.DeserializeObject<dynamic>(jsonInput);
现在我有了动态的jsonDynamic .NET对象。
我现在如何获得它的属性? 这些应该是jsonDynamic.CONTRATE,jsonDynamic.SALINC等......
如何从jsonDynamic获取这些属性的名称?
感谢。
答案 0 :(得分:0)
您可以创建一个代表您要反序列化的json的类,如下所示:
public class ClassName
{
public int Contrate { get; set; }
public int Salinc { get; set; }
// Here you will place the rest of your properties.
}
然后只使用它:
var jsonDynamic = JsonConvert.DeserializeObject<ClassName>(jsonInput);
这样您就可以避免使用动态对象。
答案 1 :(得分:0)
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"];
或者如果您只想要属性名称
var propNames = jobj.Children()
.OfType<JProperty>()
.Select(x => x.Name)
.ToList();
答案 2 :(得分:-2)
您应该反序列化为Dictionary,然后您可以遍历Keys以获取属性名称
Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonInput);
您可以访问values.Keys以获取属性名称。