2016-04-24 38 views
0

我具有平坦DTO這樣的Json淨序列扁平物體到一個複雜的對象(變化對序列化/反序列化對象結構)

public class User 
{ 
    [JsonProperty("email")] 
    public string Email { get; set; } 

    [JsonProperty("fname")] 
    public string FirstName { get; set; } 

    [JsonProperty("lname")] 
    public string LastName { get; set; } 

    [JsonProperty("phone")] 
    public string Phone { get; set; } 

    [JsonProperty("city")] 
    public string City { get; set; } 

    [JsonProperty("country")] 
    public string CountryCode { get; set; } 

    [JsonProperty("state")] 
    public string State { get; set; } 

    [JsonProperty("zip")] 
    public string Zip { get; set; } 

    [JsonProperty("address1")] 
    public string Address1 { get; set; } 

    [JsonProperty("address2")] 
    public string Address2 { get; set; } 
} 

這是默認在一個「平面」 JSON序列:

{ 
    'email':'[email protected]', 
    'fname':'John', 
    'phone':'123456789', 
    'city':'New York', 
    'zip':'1111', 
    'lname':'Joe', 
    'state':'NY', 
    'address1' : 'address1' 
} 

我想序列化,以更結構化JSON對象:

{ 
    'email':'[email protected]', 
    'fname':'John', 
    'phone':'123456789', 
    'lname':'Joe', 
    'address' : { 
     'city':'New York', 
     'zip':'1111',   
     'state':'NY', 
     'address1' : 'address1' 
     }   
} 

有什麼辦法做到這一點,而不創建一個自定義的JsonConverter?

回答

3

不,沒有自定義的JsonConverter,或者沒有通過引入合適的Address類別來推廣平面模型,沒有辦法做到這一點。

+0

那麼,它也可以與[定製contractresolver](http://www.newtonsoft.com/json/help/html/contractresolver.htm) - 但這將是更多的工作。 – dbc