如何对Newtonsoft JArray进行排序?

26

例如,是否有可能对下面的JArray按照col2进行排序?

[
    {
        "col1": "thiscol",
        "col2": "thisval"
    },
    {
        "col1": "thiscol2",
        "col2": "thisval2"
    },
    {
        "col1": "thiscol3",
        "col2": "thisval3"
    }
]

如果将其转换为数组是唯一的解决方案,那么我该如何做?

1个回答

47

我认为你不能对JArray进行原地排序,但你可以对内容进行排序,并将结果加载到另一个JArray中。这个方法对你有用吗?

string json = @"
[
    {
        ""col1"": ""foo"",
        ""col2"": ""bar""
    },
    {
        ""col1"": ""baz"",
        ""col2"": ""quux""
    },
    {
        ""col1"": ""fizz"",
        ""col2"": ""bang""
    }
]";

JArray array = JArray.Parse(json);

JArray sorted = new JArray(array.OrderBy(obj => (string)obj["col2"]));

Console.WriteLine(sorted.ToString(Formatting.Indented));

输出:

[
  {
    "col1": "fizz",
    "col2": "bang"
  },
  {
    "col1": "foo",
    "col2": "bar"
  },
  {
    "col1": "baz",
    "col2": "quux"
  }
]

示例代码:https://dotnetfiddle.net/2lTZP7


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接