0

我有一个 Web API 服务(令我惊讶)需要能够接受 XML 和 JSON。首先,这里是模型:

[DataContract]
public class SerializedCustomerEvent
{
    [DataMember]
    public string TypeID { get; set; }
    [DataMember]
    public ContextPair[] Context { get; set; }
}

public class ContextPair
{
    public string Key { get; set; }
    public string Value { get; set; }
}

这是 API 控制器方法:

public void Post(SerializedCustomerEvent value)
{
    _queueBroker.Queue(value);
}

现在这是我忽略某些东西的部分。来自 Fiddler 的 JSON 帖子可以正常工作:

Content-Type: application/json; charset=utf-8

{
    "TypeID":"ABC",
    "Context":
    [
        {"Key":"Field1","Value":"123"},
        {"Key":"Field2","Value":"Jeff"}
    ]
}

但是,XML 版本不起作用。Context 属性始终为空。

Content-Type: application/xml; charset=utf-8

<?xml version="1.0"?>
<SerializedCustomerEvent xmlns="http://schemas.datacontract.org/2004/07/MyNamespace">
    <TypeID>XMLWow</TypeID>
    <Context>
        <ContextPair>
            <Key>Field1</Key>
            <Value>123</Value>
        </ContextPair>
        <ContextPair>
            <Key>Field2</Key>
            <Value>Jeff</Value>
        </ContextPair>
    </Context>
</SerializedCustomerEvent>

我在这里想念什么?

4

1 回答 1

2

请参阅此 SO 帖子:这是因为数据合同希望成员按字母顺序排列。因此,如果您在源中交换 TypeID 和 Context 元素,它们都将填充到您的对象中。

于 2013-08-23T20:32:51.463 回答