【发布时间】:2015-11-12 15:45:00
【问题描述】:
我正在尝试使用 JsonConvert.DeserializeObject 将字符串反序列化为 JSON 对象,如下所示:
var str = "{ Value: \"File\",Text: \"OWENS & MINOR INFANT - 2228548\"}";
agreementnodes = JsonConvert.DeserializeObject<List<AgreementNode>>("[" + str + "]");
当 json 转换为数组时,属性按字母顺序排列。示例:即使 Value 是第一个并且 Text 在字符串中,属性也会显示如下:
即使在类声明中,I Value 也是 Firs,Text 是其次。但是在反序列化时,属性是按字母顺序排序的。
[JsonProperty(Order = 9)]
public string Value { get; set; }
[JsonProperty(Order = 10)]
public string Text { get; set; }
有什么方法可以保留结果数组中属性的顺序,比如我想要 resultantarray[0] = Value 和 resultantarray1 = Text?
【问题讨论】:
-
JS中对象的属性顺序是完全任意的,不能可靠地预先定义。你需要这个有什么特别的原因吗?如果是因为在
JsonProperty属性上指定了Order,则最好为属性的序列化定义一个Name,而不是依赖于它们提供给 ModelBinder 的顺序。 -
我将数据直接绑定到 JQuery 数据表,其中我有特定顺序的属性。我不想维护对象客户端的顺序,也不想构建一个新数组,因为它是返工。
-
我的意思是,为什么它们按特定顺序排列?不能依赖对象属性按特定顺序排列。
标签: c# jquery .net json asp.net-mvc