Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将JSON映射到具有不同结构的对象?_C#_Json_Json.net - Fatal编程技术网

C# 如何将JSON映射到具有不同结构的对象?

C# 如何将JSON映射到具有不同结构的对象?,c#,json,json.net,C#,Json,Json.net,我有一些JSON与此模式: { "person":{ "name":"test", "family":"testi" }, "Employee":{ "id":54, "department":"web development", "skils":[{"type":"C#", "grade":"good"},{{"type":"SQL", "grade":"Expert"}}] } }

我有一些JSON与此模式:

{
    "person":{
        "name":"test",
        "family":"testi"
    },
    "Employee":{
        "id":54,
        "department":"web development",
        "skils":[{"type":"C#", "grade":"good"},{{"type":"SQL", "grade":"Expert"}}]
    }
}
我需要将这个JSON映射到以下类:

class Employee {
    public int id { get; set; }
    public string Name { get; set; }
    public string Family { get; set; }
    public string Department { get; set; }
    public Skill[] Skills { get; set;}
}

class skill {
    public string Type { get; set; }
    public string Grade { get; set; }
}
现在有没有办法将我的JSON模式映射到我的C#对象? 我正在使用Newtonsoft.Json库,并尝试使用
JsonProperty
属性,如下所示:

[JsonProperty("Person.Name")]

在我的
员工
课上。但这是行不通的。有什么办法解决这个问题吗?

您的类不适合json。您必须均衡类的属性和json对象的属性。 json有一个名为person的属性,但您的类没有

MappedObject mappedObject = JsonConvert.DeserializeObject<MappedObject>(yourJson);

class MappedObject{
    public Person person;
    public Employee employee; 
}

class Person{
    public string name;
    public string family;
}
class Employee {
    public intid{get; set;}
    public string deartment {get; set;}
    public Skill[] skills {get; set;}
}
class skill{
    public string type{get; set;}
    public string grade{get; set;}
}

我这样做。。。它工作得很好。。。我的项目是其他服务的包装,我必须用我自己的模式发送对象。。。。我可以使用自动映射器,但这会导致创建一个额外的步骤来将MappedObject转换为我的模式。我想减少此步骤,因此您应该使用我的第一个代码。但它不填充员工姓名和家庭属性…因此您可以发送或使用mappedObject.employee,但您必须从json中填充它们。填写后不使用它们。
Employee
类中存在错误。它仍然包含
Name
Family
属性,它们不是初始json模式的一部分。为了成功映射,属性名称的大小写应该一致。
dynamic result = new ExpandoObject();
result = JsonConvert.DeserializeObject(yourJson);