Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果类具有JsonExtensionData,如何使用Json.NET对属性进行排序? 现状_C#_.net_Json_Serialization_Json.net - Fatal编程技术网

C# 如果类具有JsonExtensionData,如何使用Json.NET对属性进行排序? 现状

C# 如果类具有JsonExtensionData,如何使用Json.NET对属性进行排序? 现状,c#,.net,json,serialization,json.net,C#,.net,Json,Serialization,Json.net,对于示例类: public class Example { [JsonProperty(Order = 1)] [JsonExtensionData] public JObject First { get; set; } [JsonProperty(Order = 2)] public string Second { get; set; } } JsonExtensionData(propertyFirst)中的属性在第二个存在后附加到序列化对象。例如

对于示例类:

public class Example
{
    [JsonProperty(Order = 1)]
    [JsonExtensionData]
    public JObject First { get; set; }

    [JsonProperty(Order = 2)]
    public string Second { get; set; }
}
JsonExtensionData
(property
First
)中的属性在
第二个
存在后附加到序列化对象。例如:

{
    "second": "blah blah",
    "first": {
        "name": "value"
    }
}
期望状态
似乎
[JsonProperty(Order=x)]
不适用于标记为
JsonExtensionData
的属性。关于如何达到理想状态有什么想法吗?

不确定它是否能帮助您,但您可以尝试一下。通过不标记顺序,指定了defaut顺序-2,并强制在可序列化时首先显示

public class Example
{
    [JsonExtensionData]
    public JObject First { get; set; }

    [JsonProperty(Order = 2)]
    public string Second { get; set; }
}

您好,当您将对象转换为json对象时,您应该添加额外的参数,检查一下:您的观察似乎是正确的。在属性之后序列化扩展数据。甚至没有
Order
属性。因此,对扩展数据进行排序似乎没有实现。事实上,我有点惊讶契约解析程序没有将尝试为您的
示例
类型创建契约作为
[JsonExtensionData]
[JsonProperty]
冲突。(相反,它只是假设前者取代后者。)为了得到您想要的东西,您可能需要一个自定义契约解析器+自定义转换器组合。值得吗?
public class Example
{
    [JsonExtensionData]
    public JObject First { get; set; }

    [JsonProperty(Order = 2)]
    public string Second { get; set; }
}