簡體   English   中英

http響應-指定xml元素的順序

[英]http response - specifying order of xml elements

我有一個簡單的Web API,它將根據請求中的accept標頭返回json或xml。

(application / json或application / xml)

這是我要返回的數據類的片段:

    public int ID { get; set; }

    public string ProductTitle { get; set; }

    public string Artist { get; set; }

    public string EAN_Code { get; set; }

對於json響應,名稱/值對以它們在類中聲明的相同順序返回:

[
    {
        "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>

我可以設置一些屬性/配置來停止元素的重新排列嗎?


目前我只有:

        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;
                }
            })

但是xml響應按字母順序重新排列元素:

這是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; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM