将JSON反序列化为C#对象时,如何映射动态字段名称?

问题描述 投票:0回答:3

[尝试将从API获得的JSON响应映射到我创建的适当对象时遇到问题。以下是JSON示例

{
    "Count": "1",
    "Data": {
        "EmployeeMstr": {
            "ledger": "GL",
            "faid": "_tag_"
        }
    }
}

我需要创建并反对,以便我可以反序列化上述Json。我可以使用JsonConvert.DeserializeObject<ResponseObject>(jsonResponse)创建对象并进行脱唾液酸酶处理。其中ResponseObject是我创建的类,如下所示。

public class ResponseObject 
    {
        public string Count { get; set; }
        public string NextUri { get; set; }
        public Data Data{ get; set; }        
    }
public class Data
    {
        public string EmployeeMstr { get; set; }
    }

但是问题是,上述Json中的键名"EmployeeMstr"可以是任何东西,具体取决于它来自哪个表(例如"HrNewHire" ,"Payroll"等)。我不想为所有单独的表创建单独的对象。那么最好的方法是什么,以便无论该表名是什么,我都可以使用此类来序列化JSON?

c# json json.net json-deserialization
3个回答
1
投票

您可以使用字典来存储可以更改键名称的键值。例如,>

public class Value
{
    public string ledger { get; set; }
    public string faid { get; set; }
}

public class ResponseObject 
{
    public string Count { get; set; }
    public Dictionary<string,Value> Data { get; set; }  // Change here
    public string NextUri { get; set; }
}

样本输出

enter image description here


0
投票

您可以实现一个Json Converter:


0
投票

只需将模型替换为dynamic JsonConvert.DeserializeObject<dynamic>(jsonResponse)

© www.soinside.com 2019 - 2024. All rights reserved.