2013-08-05 9 views
8

結果のシリアル化されたJSONが属性にlowercase_underscoreを使用するASP.NET MVCでREST APIを使用しています。文字列プロパティFirstNameSurnameとクラスPersonからCamelCaseへの小文字のアンダースコアのカスタムJson.NETコントラクトリゾルバ

次のように、私はJSONを取得する:

{ 
    first_name: "Charlie", 
    surname: "Brown" 
} 

はlowercase_underscore名に注意してください。

私は私のために、自動的にこの変換を行うために使用契約リゾルバは次のとおりです。

public class JsonLowerCaseUnderscoreContractResolver : DefaultContractResolver 
{ 
    private Regex regex = new Regex("(?!(^[A-Z]))([A-Z])"); 

    protected override string ResolvePropertyName(string propertyName) 
    { 
     return regex.Replace(propertyName, "_$2").ToLower(); 
    } 
} 

このすべてが正常に動作しますが、私はJson.NETと逆を実装する方法がわかりません。たとえば、APIメソッドを次のように宣言すると、要求本体の着信JSONを適切なオブジェクトに変換することができます。

答えて

2

OK、ソリューションを見つけました。 Personクラスのデフォルトのコンストラクタがありませんでした。私がそれをしたら、マッピングはPutメソッドを呼び出すときに機能しました。実際、FromBody指定子を削除することもできます:

public object Put(int id, Person person) 
関連する問題