我想弄清楚如何使用ASP.NET WebApi指定備用屬性名 - 並使其適用於反序列化+序列化和JSON + XML。到目前爲止,我只發現了部分解決方案。WebApi - 反序列化和序列化備用屬性名稱
我要揭露屬性名與下劃線較低的情況下,和(例如的緣故)有不同的內部名稱:
外部:
- 現場一個
- 現場兩個
內部:
- ItemOne
- ItemTwo
爲了進行測試,這裏只是中轉它所接收到一個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; }
}
到目前爲止,我發現:
- [數據成員(名稱= 「×」)]具有在任一方向上串行化沒有影響
- 使用JSON時[JsonProperty(名稱= 「×」)]工作在序列化(返回值)。 (這是一個JSON.NET屬性,默認序列化程序)。
對於測試數據,我提交4個屬性,以查看哪個值被反序列化,和什麼屬性名稱是關於反序列化
- ItemOne = 「值A」
- ItemTwo =「B值「
- 字段酮= 」正確1「
- 字段二= 」更正2「
我怎樣才能做到這一點?
Ah - 由於類中遺漏了[DataContract]屬性,現在*服務器的序列化結果*在JSON和XML中都是正確的。來自UI的傳入請求仍然只是使用類的自然屬性名稱進行反序列化,而不是DataMember變體。 – Overflew
不應該發生......你能分享你的原始請求看起來像嗎? –
啊 - 我使用郵遞員來創建請求,並使用'x-www-form-encoded'選項卡。在'raw'標籤中使用手工輸入的JSON數據可以得到預期的結果。愚蠢的我,但我有點困惑,爲什麼一個'Rest API測試工具'具有花哨的鍵/值編輯工具作爲前2個選項卡(form-data&form-urlendcoded),在哪裏工具來生成一個JSON請求是手動的... – Overflew