Windows.Data.Json保留原始订单

时间:2016-07-16 19:33:06

标签: c# json windows uwp

我试图使用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”

1 个答案:

答案 0 :(得分:1)

  

当我从JsonObject中执行字符串打印时,它看起来是正确的顺序,但是当我遍历它们时,它们会以不同的顺序输出。

我做了一个演示并重现了你的问题。经过研究,我发现JsonObject.Keys正在使用IDictionary.Keys,这并不保证订单。如果您想以正确的顺序遍历JObject,我建议您使用Newtonsoft.Json。< / p>

您可以使用以下代码遍历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();
}