web-dev-qa-db-ja.com

クラスレベルでJson.NETシリアル化設定を構成する

キャメルケースの命名規則を使用して、クラスをシリアル化および逆シリアル化する必要があります。述べたようにJsonConvert.SerializeObject(object, settings)オーバーロードを使用できることを知っています ここ

var serializerSettings = new JsonSerializerSettings();
serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
var json = JsonConvert.SerializeObject(product, serializerSettings);

シリアル化設定をオーバーライドする必要がないように、(属性を介して)クラスレベルで同じ構成を適用する方法はありますか?

カスタムコンバーター と書くこともできますが、それはそのような単純なことにはやり過ぎのように見えます。

10

Json.NET 9.0.1以降を使用している場合は、NamingStrategyTypeJsonObjectAttributeプロパティを使用して、目的を達成できます。引数をNamingStrategyのコンストラクターに渡す必要がある場合は、NamingStrategyParametersプロパティで引数を指定します。以下は、キャメルケースの命名戦略でクラスを指定する方法の例です。

[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
public class Foo
{
    public string Bar;
}
18
TylerBrinkley