我有一个Web API项目,其模型如下所示:
public class Account{
string FirstName{get;set;}
string LastName{get;set;}
}
我希望JSON响应为属性使用不同的格式和大小写,如下所示:
first_name
last_name
有没有办法通过某种json格式化程序全局执行此操作,还是最好使用适当的大小写创建单独的ViewModel类?
答案 0 :(得分:0)
您应该出于多种原因创建单独的viewmodel类。
最好使用单独的viewmodel类,以免过度使用模型。如果您使用具有10个字段的实体类作为视图模型,并且您只想公开其中的5个,则恶意用户可能会使用查询字符串发布额外数据,并且自动绑定可能会将其融合而无法实现
在您的示例中,您可能希望为字段使用完全不同的名称。这是为您的实体类创建自定义视图模型的理想选择。
分离这些问题将有助于您的应用程序在将来更加可重用,并且更容易在当前进行测试/调试。如果您发现自己处于视图模型太多的情况下,请考虑将这些不同的控制器,视图和模型分解到不同的区域(blog on areas)。
作为旁注,如果你想格式化JSON,可能更容易在事后用javascript而不是事先做,因为通常编辑JSON序列化器类是一项很大的努力。您可以编写一个脚本,该脚本经过并自动将驼峰大小写转换为_
分隔的小写。这样做的一个缺点是,如果你不希望功能像这样执行,它可能会在将来产生意想不到的影响。