[英]How to get a list of dynamic object properties in c#
我有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獲取這些屬性的名稱?
謝謝。
您可以創建一個表示要反序列化的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);
這樣,您將避免使用動態對象。
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();
您應該反序列化為Dictionary,然后可以遍歷Keys以獲取屬性名稱
Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonInput);
您可以訪問values.Keys來獲取屬性名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.