10

ASP.NET MVC で REST API に取り組んでおり、結果のシリアル化された JSON は属性に lowercase_underscore を使用します。

Person文字列プロパティFirstNameとを持つクラスから、Surname次のように 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 を適切なオブジェクトに変換することが認識されます。

public object Put(int id, [FromBody] Person person)
4

1 に答える 1

2

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

public object Put(int id, Person person)
于 2013-08-05T06:48:28.083 に答える