使用嵌套对象中的属性反序列化JSON

时间:2015-11-05 14:47:53

标签: c# json json.net deserialization

如何轻松地将此JSON反序列化为OrderDto C#类?有没有办法以某种方式用属性做到这一点?

JSON:

{
    "ExternalId": "123",
    "Customer": {
        "Name": "John Smith"
    }
    ...
}

C#:

public class OrderDto
{
    public string ExternalId { get; set; }
    public string CustomerName { get; set; }
    ...
}

我尝试使用JsonProperty属性,但无法使其正常工作。我的想法是写一个注释,如:

[JsonProperty("Customer/Name")]
public string CustomerName { get; set; }

但它似乎并没有起作用。有任何想法吗?谢谢! :)

2 个答案:

答案 0 :(得分:4)

您的课程应如下所示:

public class OrderDto
{
    public string ExternalId { get; set; }
    public Customer Customer { get; set;}
}

public class Customer
{
    public string CustomerName { get; set; }
}

将来一个好主意是采用一些现有的JSON并使用http://json2csharp.com/

答案 1 :(得分:1)

您可以创建另一个嵌套其余属性的类,如下所示:

public class OrderDto
{
    public string ExternalId { get; set; }

    public Customer Customer { get; set; }
}

public class Customer
{
    public string Name { get; set; }
}

原因是因为Name是JSON数据中Customer对象的嵌套属性。

如果JSON名称与您希望在代码中提供的名称不同,则通常使用[JsonProperty("")]代码,即

[JsonProperty("randomJsonName")]
public string ThisIsntTheSameAsTheJson { get; set; }