2013-11-09 17 views
5

私はライブラリを持っていますが、私はコントロールできません。私は、これらのプロパティ名をマッピングするために、各メッセージを表すクラスのプロパティに属性を追加することができますjson.net使用Json.Netシリアル化中のプロパティの名前を変更します

{"my property": "my value"} 

{"my-property": "my value"} 

:オブジェクトは、このようなプロパティ名でフォーマットされています私のクラスのプロパティ:

public class MyClass 
{ 
    [JsonProperty(PropertyName="my-prop")] 
    public String MyProperty {get; set;} 
} 

これは罰金ですが、問題は、私は多数のクラスにこれらの「魔法の文字列」を使用する必要があると私は本当に魔法の文字列を軽蔑することです。

一番下の行:

は自動的にこれらのプロパティをマップjson.net有するようにC#の読める文字列にこれらのプロパティのすべてを変更する方法はありますか?その後、ハードコード化された文字列の値を持つプロパティに注釈を付けることなく、MyClassのにMYPROPERTY部材にその値を流れるであろう、デシリアライゼーション中

{"MyProperty": "my value"} 

すなわち:

{"my property": "my value"} 

はに変わります。

+0

私はちょうど[非常によく似た質問](http://stackoverflow.com/q/19792274/10263)に答えました。ここでは、カスタムJsonConverterを使用し、Json.Netソースコードを変更するという2つのアプローチについて説明します。私はあなたのケースで同じ解決策が適用されると思います。 –

+0

優秀な回答@BrianRogers ...私は何か似たようなことをしようとしていましたが、私はJsonConverterが何をしているかに慣れていないので、正しくアプローチしていませんでした...私はこれを明日試してみましょうしかし、それは有望だと思われる –

+0

@BrianRogersうん、それは完全に働いたように見える(JsonConverterアプローチ)。あなたが答えのクレジットを望むなら(特にあなたが前に取得しなかったので)あなたはあなたの答えをここに掲示することができ、それを正しいものとしてマークします –

答えて

1

two approachesJsonConverterを使用して、私はtwo approachesを議論し、Json.Netのソースコードを修正しました。私はあなたのケースで同じ解決策が適用されると思います。

関連する問題