1. ホーム
  2. asp.net-mvc

[解決済み] ASP.NET MVCでJson()から小文字のプロパティ名を強制的に取得する。

2023-03-03 08:14:21

質問

次のようなクラスがあるとする。

public class Result
{      
    public bool Success { get; set; }

    public string Message { get; set; }
}

このうちの1つをControllerのアクションで以下のように返しています。

return Json(new Result() { Success = true, Message = "test"})

しかし、私のクライアント側のフレームワークは、これらのプロパティが小文字のsuccessとmessageであることを期待しています。 実際に小文字のプロパティ名を持つことなく、これを達成する方法は、通常のJson関数呼び出しを考えたのでしょうか?

どのように解決するのですか?

これを実現する方法は、カスタムな JsonResult をここのように カスタムのValueTypeを作成し、カスタムのJsonResultでシリアライズします。 (元リンク切れ) .

そして、次のような代替シリアライザーを使用します。 JSON.NET のような、この種の動作をサポートするシリアライザを使用します。 などです。

Product product = new Product
{
  ExpiryDate = new DateTime(2010, 12, 20, 18, 1, 0, DateTimeKind.Utc),
  Name = "Widget",
  Price = 9.99m,
  Sizes = new[] {"Small", "Medium", "Large"}
};

string json = 
  JsonConvert.SerializeObject(
    product,
    Formatting.Indented,
    new JsonSerializerSettings 
    { 
      ContractResolver = new CamelCasePropertyNamesContractResolver() 
    }
);

の結果

{
  "name": "Widget",
  "expiryDate": "\/Date(1292868060000)\/",
  "price": 9.99,
  "sizes": [
    "Small",
    "Medium",
    "Large"
  ]
}