2016-07-16 2 views
0

Windows.Data.Json (JSON.NET에서 멀리 이동)을 사용하여 서버에서 JSON을 구문 분석하려고 시도했지만 키를 반복 할 때 항목의 순서가 섞여있는 것처럼 보입니다.Windows.Data.Json 원래 순서 유지

원래 주문을 유지할 방법이 있습니까?

예를 들어

:

JSON :

{ 

"name1": "example", 

"name2": "example", 

"name3": "example", 

"name4": "example" 

} 

내가 문자열이 된 JSONObject에서 인쇄 할 때이 있지만 올바른 순서로 나타납니다 나는 그들을 통해 루프 그들은 ​​서로 다른 출력을 얻을 때 주문. 예를 들어

:

이 순서로 출력한다
foreach(string name in parsedJson.Keys) 
{ 
} 

"NAME3", "NAME2", "NAME1", "NAME4"

답변

1

I을 JsonObject에서 올바른 순서로 표시되는 문자열 인쇄를 수행하지만 루프를 통과 할 때 출력 순서가 달라집니다.

데모를 작성하여 문제를 재현했습니다. 조사한 결과, JsonObject.KeysIDictionary.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(); 
}