2017-10-18 14 views
0

Json.NETを使用すると、オブジェクト自体の代わりにオブジェクトのフィールドをシリアル化できますか?Json.NET親なしのオブジェクトプロパティのシリアル化

JMSシリアライザ(PHP)では、@Inlineアノテーションを使用できます。私はApiResponseDataをシリアル化した場合

public class ApiResponseData 
{ 
    public User User { get; set; } 
} 

public class User 
{ 
    public string Username { get; set; } 
    public string Firstname { get; set; } 
    public string Lastname { get; set; } 
} 

私は、ユーザー名、姓と名のではなく、ユーザーのプロパティを取得したいと思います。実際

:理想の{ "user": { "username": "username", "firstname": "firstname", "lastname": "lastname" } }
{ "username": "username", "firstname": "firstname", "lastname": "lastname" }

+0

'JsonConvert.SerializeObject(apiResponseData.User)'を使用したときの問題点を教えてください。 – Alex

+0

@Alex @Alex私は少しの文脈を残しましたが、ApiResponseDataはApiResponseを実装しており、Userを本体として持っている必要があります(ただし、UserをエンティティクラスとしてUserを使用しているため、 /プロパティ。 – StockBreak

+0

カスタムjsonコンバータでオーバーライドすることができます。このようにhttps://stackoverflow.com/questions/40862660/how-to-inline-a-property-in-resulting-json-with-json-net –

答えて

0

代わりApiResponseData自体をシリアライズのApiResponseData.Userをシリアル化しようとすることができます。この方法では、 ApiResponseData.Userの値のみをシリアル化します。同様に:

+0

はいこれは私が今やっていることです。それは非常にきれいな解決策ではありません。JMSの@Inlineアノテーションは非常に便利です.Json.NETにそのような属性がないことを確認できますか? – StockBreak

0

このクラスのオブジェクトを含むクラスでは、直列化したいメンバの値を返す内部プロパティを追加できます。最も洗練されたソリューションではありませんが、機能します。

関連する問題