http 响应 - 指定 xml 元素的顺序
http response - specifying order of xml elements
我有一个简单的 Web API,它将 return json 或 xml,具体取决于请求中的接受 header。
(application/json 或 application/xml)
这是数据的片段 class 我正在 returning:
public int ID { get; set; }
public string ProductTitle { get; set; }
public string Artist { get; set; }
public string EAN_Code { get; set; }
对于 json 响应,name/value 对的 return 顺序与它们在 class 中声明的顺序相同:
[
{
"ID": 1,
"ProductTitle": "Product 1",
"Artist": "Artist 1",
"EAN_Code": "1234567890123",
但 xml 响应按字母顺序重新排列元素:
<Artist>Artist 1</Artist>
<EAN_Code>1234567890123</EAN_Code>
<ID>1</ID>
<ProductTitle>Product 1</ProductTitle>
我可以设置一些 property/configuration 来阻止重新排列元素吗?
目前我只有:
services.AddMvc()
.AddMvcOptions(o => o.OutputFormatters.Add(
new XmlDataContractSerializerOutputFormatter()))
.AddJsonOptions(o =>
{
if (o.SerializerSettings.ContractResolver != null)
{
var castedResolver = o.SerializerSettings.ContractResolver
as DefaultContractResolver;
castedResolver.NamingStrategy = null;
}
})
but the xml response rearranges the elements alphabetically:
这是 XML 序列化的默认行为,没有针对它的设置。
要解决此问题,您可以为属性指定 Order
。
[DataContract]
public class JsonXML
{
[DataMember(Order =1)]
public int ID { get; set; }
[DataMember(Order = 2)]
public string ProductTitle { get; set; }
[DataMember(Order = 3)]
public string Artist { get; set; }
[DataMember(Order = 4)]
public string EAN_Code { get; set; }
}
我有一个简单的 Web API,它将 return json 或 xml,具体取决于请求中的接受 header。
(application/json 或 application/xml)
这是数据的片段 class 我正在 returning:
public int ID { get; set; }
public string ProductTitle { get; set; }
public string Artist { get; set; }
public string EAN_Code { get; set; }
对于 json 响应,name/value 对的 return 顺序与它们在 class 中声明的顺序相同:
[
{
"ID": 1,
"ProductTitle": "Product 1",
"Artist": "Artist 1",
"EAN_Code": "1234567890123",
但 xml 响应按字母顺序重新排列元素:
<Artist>Artist 1</Artist>
<EAN_Code>1234567890123</EAN_Code>
<ID>1</ID>
<ProductTitle>Product 1</ProductTitle>
我可以设置一些 property/configuration 来阻止重新排列元素吗?
目前我只有:
services.AddMvc()
.AddMvcOptions(o => o.OutputFormatters.Add(
new XmlDataContractSerializerOutputFormatter()))
.AddJsonOptions(o =>
{
if (o.SerializerSettings.ContractResolver != null)
{
var castedResolver = o.SerializerSettings.ContractResolver
as DefaultContractResolver;
castedResolver.NamingStrategy = null;
}
})
but the xml response rearranges the elements alphabetically:
这是 XML 序列化的默认行为,没有针对它的设置。
要解决此问题,您可以为属性指定 Order
。
[DataContract]
public class JsonXML
{
[DataMember(Order =1)]
public int ID { get; set; }
[DataMember(Order = 2)]
public string ProductTitle { get; set; }
[DataMember(Order = 3)]
public string Artist { get; set; }
[DataMember(Order = 4)]
public string EAN_Code { get; set; }
}