2016-07-16 5 views
0

Ich versuche, die Windows.Data.Json (weg von JSON.NET) zu verwenden, um JSON von einem Server zu analysieren, aber es scheint die Reihenfolge der Elemente beim Schleifen (foreach) durch die Schlüssel zu verwechseln.Windows.Data.Json Originalreihenfolge beibehalten

Gibt es eine Möglichkeit, die ursprüngliche Reihenfolge beizubehalten?

Zum Beispiel:

JSON:

{ 

"name1": "example", 

"name2": "example", 

"name3": "example", 

"name4": "example" 

} 

Wenn ich eine Zeichenfolge aus dem JsonObject drucke erscheint es in der richtigen Reihenfolge zu sein, aber wenn ich Schleife durch sie sie Ausgang in einem anderen bekommen Auftrag.

Zum Beispiel:

foreach(string name in parsedJson.Keys) 
{ 
} 

die in dieser Reihenfolge ausgibt

"name3", "name2", "name1", "name4"

Antwort

1

Wenn i mache einen String-Ausdruck aus dem JsonObject, der in der richtigen Reihenfolge zu sein scheint, aber wenn ich sie durchlaufe, werden sie in einer anderen Reihenfolge ausgegeben.

Ich machte eine Demo und reproduziert Ihr Problem. Nach dem Recherchieren fand ich JsonObject.Keys verwendet IDictionary.Keys, die die Reihenfolge nicht garantiert. Wenn Sie das JObject in der richtigen Reihenfolge durchlaufen möchten, empfehle ich Ihnen, Newtonsoft.Json zu verwenden.

Sie können Schleife durch das JSON-Objekt mit folgenden Codes:

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(); 
}