一尘不染

在ASP.NET MVC中从Json()强制使用小写属性名称

json

鉴于以下课程,

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

    public string Message { get; set; }
}

我将在这样的Controller动作中返回其中之一,

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

但是我的客户端框架期望这些属性是小写的成功和信息。不必实际上具有小写的属性名称,是否可以通过正常的Json函数调用来实现这一想法?


阅读 472

收藏
2020-07-27

共1个答案

一尘不染

实现此目的的方法是在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"
  ]
}
2020-07-27