c# - 使用 Newtonsoft.json 自定义反序列化

标签 c# json deserialization

我正在尝试为我的类结构反序列化一个 json

我有以下 JSON:

{
    "Main": {
        "Employees": {
            "0": {
                "FirstName": "Test ",
                "LastName": "One"
            },
            "1": {
                "FirstName": "Test ",
                "LastName": "Two"
            }
        }
    }
}    

我想为以下类结构反序列化它:

public class Main
{
    public List<Employee> Employees { get; set; }
}

public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

有人可以建议我如何为此/任何其他选项编写转换器来实现此目的吗?

最佳答案

显然理想的事情是使用不同的 JSON(数组),但这可能是不可能的。

这不使用自定义反序列化选项,但是 - 它有效:

dynamic root = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
Newtonsoft.Json.Linq.JObject emps = root.Main.Employees;
var list = new List<Employee>();
foreach(var child in emps.Properties())
{
    list.Add(child.Value.ToObject<Employee>());
}

关于c# - 使用 Newtonsoft.json 自定义反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47926305/

相关文章:

c# - MVVM : RaisePropertyChange on another item in the same list

c# - 如何在 C# 中转义 XML 字符串中的无效字符

c# - VLC 媒体播放器是否有 C# 接口(interface)?

java - 使用 xstream 反序列化一个 json 数组

java - 想要使用 arraylist 将 json 字符串反序列化为 java 对象

java - Jackson 中的通用元组反序列化

c# - 我可以使用 XmlSerializer 控制某些字段的序列化吗

android - 在为无名 JSONObject 解析 JSONArray 时如何停止 for 循环?

javascript - 在 Javascript 中使用变量作为对象成员名称

python - Flask RESTful POST JSON 失败