我试图使用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”
答案 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();
}