web-dev-qa-db-ja.com

ネストされたオブジェクトのプロパティを使用してJSONを逆シリアル化する

このJSONをOrderDtoC#クラスに簡単に逆シリアル化するにはどうすればよいですか?どういうわけか属性でこれを行う方法はありますか?

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

しかし、それはうまくいかないようです。何か案は?どうも! :)

10
bojank

クラスは次のようになります。

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/ を使用することをお勧めします。

5
Ric

次のように、残りのプロパティをネストする別のクラスを作成できます。

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

    public Customer Customer { get; set; }
}

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

これは、NameがJSONデータ内のCustomerオブジェクトのネストされたプロパティであるためです。

[JsonProperty("")]コードは通常、JSON名がコードで付けたい名前と異なる場合に使用されます。

_[JsonProperty("randomJsonName")]
public string ThisIsntTheSameAsTheJson { get; set; }
_
1
James Moore