2015-11-05 124 views
3

如何輕鬆地將此JSON反序列化爲OrderDto C#類?有沒有辦法做到這一點與屬性?使用嵌套對象中的屬性反序列化JSON

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; } 

但它似乎並沒有工作。有任何想法嗎?謝謝! :)

回答

0

您可以創建另一個類,嵌套屬性的其餘喜歡如下:

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

    public Customer Customer { get; set; } 
} 

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

這樣做的原因是因爲名稱是客戶對象在JSON數據嵌套屬性。

[JsonProperty("")]代碼通常用於如果JSON名字比名字不同,你想給它的代碼,即

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

因此,除了引入新的類,沒有其他方式?我希望我並不需要引進新的... – bojank

+0

@bojank不受限制,只要我知道了。 C#端必須複製數據以JSON表示的方式。有可能將它轉換爲鍵值對的字符串或其他東西,但這可能不是首選。 –

+0

'「客戶」:{「名稱」:「約翰·史密斯」}'是另一個對象,還有比創造了這個新的對象周圍沒有其他辦法。鏈接到json2csharp的 – Ric

3

你的類應該是這樣的:

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

是非常有用的。謝謝!!! – Phil

+0

不客氣! – Ric