颠倒反序列化的json.net对象的顺序

时间:2017-01-06 23:29:19

标签: c# json

我正在处理日期和时间但我的json文件将最新的实例放在第一位。我希望能够以线性顺序([0,1,2,3])从最旧到最新的entrie迭代数组。我使用Newtonsoft反序列化json。我如何改变这个顺序呢?

这是我的对象

    // Converts json file to a serialized array of locations 
    JsonObjector jObj = JsonConvert.DeserializeObject<JsonObjector>(jsonFile);

以下是json的一小部分样本

{
  "locations" : [ {
    "timestampMs" : "1482139582626",
    "latitudeE7" : 611636226,
    "longitudeE7" : -1498703826,
    "accuracy" : 23
  }, {
    "timestampMs" : "1482139560770",
    "latitudeE7" : 611636226,
    "longitudeE7" : -1498703826,
    "accuracy" : 23
  }, {
    "timestampMs" : "1482139441012",
    "latitudeE7" : 611636226,
    "longitudeE7" : -1498703826,
    "accuracy" : 23
  }, {
    "timestampMs" : "1482139355650",
    "latitudeE7" : 611636226,
    "longitudeE7" : -1498703826,
    "accuracy" : 23
  } ]
}

这是我的课程

public class JsonObjector
{
    public Location[] locations { get; set; }
}
public class Location
{
    public string timestampMs { get; set; }
    public int latitudeE7 { get; set; }
    public int longitudeE7 { get; set; }
    public int accuracy { get; set; }
}

2 个答案:

答案 0 :(得分:0)

您可以使用LINQ按照您想要的顺序对Location个对象进行排序:

JsonObjector jObj = JsonConvert.DeserializeObject<JsonObjector>(jsonFile);

foreach(var location in jObj.locations.OrderBy(l => l.timestampsMs))
   // use location

注意:Newtonsoft json反序列化器不会更改对象的顺序。

答案 1 :(得分:0)

这对我有用。感谢每个人的帮助!

JsonObjector jObj = JsonConvert.DeserializeObject<JsonObjector>(jsonFile);

Array.Reverse(jObj.locations);