簡體   English   中英

如何在C#中獲取動態對象屬性的列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM