【发布时间】:2014-04-24 22:16:35
【问题描述】:
我试图弄清楚如何使用 ASP.NET WebApi 指定备用属性名称 - 并使其适用于反序列化 + 序列化以及 JSON + XML。到目前为止,我只发现了部分解决方案。
我想将属性名称显示为带下划线的小写字母,并且(例如,为了)具有不同的内部名称:
外部:
- 字段一
- 第二场
内部:
- ItemOne
- 项目二
为了测试,这里有一个 POST 控制器操作,它只是中继它接收到的内容:
// POST api/values
public TestSerialization Post([FromBody]TestSerialization value)
{
return value;
}
还有一个测试实体:
public class TestSerialization
{
[DataMember(Name = "field_one")] // Doesn't appear to change anything
public string ItemOne { get; set; }
[JsonProperty(PropertyName = "field_two")] // Only works for serialization in JSON mode
public string ItemTwo { get; set; }
}
到目前为止,我发现:
- [DataMember(Name = "x")] 对任一方向的序列化都没有影响
- [JsonProperty(Name = "x")] 在使用 JSON 时适用于序列化(返回值)。 (这是一个 JSON.NET 属性,默认序列化程序)。
对于测试数据,我提交了 4 个属性,看看哪个值被反序列化,以及反序列化时的属性名称是什么
- ItemOne = "值 A"
- ItemTwo = "值 B"
- field-one = "正确的 1"
- field-two = "正确的 2"
我怎样才能做到这一点?
【问题讨论】:
标签: c# asp.net asp.net-web-api