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
(propertyFirst
)中的属性在第二个
存在后附加到序列化对象。例如:
{
"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; }
}