【问题标题】:Windows.Data.Json keep original orderWindows.Data.Json 保持原始顺序
【发布时间】:2016-11-19 18:30:50
【问题描述】:

我尝试使用Windows.Data.Json(从 JSON.NET 移开)从服务器解析 JSON,但在通过键循环(foreach)时似乎混淆了项目的顺序。

有什么办法可以维持原来的秩序吗?

例如:

JSON:

{

"name1": "example",

"name2": "example",

"name3": "example",

"name4": "example"

}

当我从 JsonObject 中打印出一个字符串时,它的顺序似乎是正确的,但是当我遍历它们时,它们会以不同的顺序得到输出。

例如:

foreach(string name in parsedJson.Keys)
{
}

按此顺序输出

“name3”、“name2”、“name1”、“name4”

【问题讨论】:

    标签: c# json windows uwp


    【解决方案1】:

    当我从 JsonObject 中打印出一个字符串时,它的顺序似乎是正确的,但是当我遍历它们时,它们会以不同的顺序得到输出。

    我做了一个演示并重现了您的问题。经过研究,我发现JsonObject.Keys使用IDictionary.Keys,这并不能保证顺序。如果你想以正确的顺序循环JObject我建议你使用Newtonsoft.Json

    您可以使用以下代码循环访问 JSON 对象:

    using Newtonsoft.Json.Linq;
    ...
    String jsonStr = "{\"name1\": \"example\",\"name2\": \"example2\",\"name3\": \"example3\",\"name4\": \"example4\"}";
    JObject obj=JObject.Parse(jsonStr);
    foreach (JProperty prop in obj.Properties())
    {
        string key = prop.Name;
        var value = prop.Value.ToString();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      相关资源
      最近更新 更多