C# 使用JSON.Net反序列化时的属性顺序

C# 使用JSON.Net反序列化时的属性顺序,c#,jquery,.net,json,asp.net-mvc,C#,Jquery,.net,Json,Asp.net Mvc,我正在尝试使用JsonConvert.DeserializeObject将字符串反序列化为JSON对象,如下所示: var str = "{ Value: \"File\",Text: \"OWENS &amp; MINOR INFANT - 2228548\"}"; agreementnodes = JsonConvert.DeserializeObject<List<AgreementNode>>("[" + str + "]"); 是否有任何方法可以像

我正在尝试使用JsonConvert.DeserializeObject将字符串反序列化为JSON对象,如下所示:

 var str = "{ Value: \"File\",Text: \"OWENS &amp; MINOR  INFANT - 2228548\"}";
agreementnodes = JsonConvert.DeserializeObject<List<AgreementNode>>("[" + str + "]");

是否有任何方法可以像我希望ResultArray[0]=Value和ResultArray=Text那样保留结果数组中属性的顺序?

json.net序列化程序没有问题。它在quickwatch和watch窗口中按字母顺序自动排序。如果需要,请检查System.Web.HttpContext.SystemWebAssembly。它不是反序列化代码


根据规范,属性的顺序未定义。尽管如此,最新的ECMAScript(JavaScript)规范需要一种有序的格式,它还支持新的酷炫应用程序,如:

JS中对象属性的顺序完全是任意的,无法可靠地预定义。你需要这个的具体原因是什么?如果是由于在
JsonProperty
属性上指定了
顺序
,最好为属性的序列化定义一个
名称
,而不是依赖于它们提供给ModelBinder的顺序。我将数据直接绑定到JQuery数据表,在那里我有特定顺序的属性。我不想维护客户端对象的顺序,也不想构建一个新的数组,因为它需要返工。我的问题是,为什么它们是按特定顺序排列的?不能依赖对象属性按特定顺序排列。
[JsonProperty(Order = 9)]
public string Value { get; set; }

[JsonProperty(Order = 10)]
public string Text { get; set; }