2016-06-13 6 views
-2

아래와 같이 JSON을 얻었습니다. 내가 보여주고 싶은대로JSONModel을 사용하여 NSDictionary를 매핑하는 방법

odds: { 
0501: { 
x: 2.75, 
description: "a" 
}, 
0502: { 
x: 3.25, 
description: "b" 
}, 
0513: { 
x: 3.5, 
description: "c" 
}, 
0503: { 
x: 3.5, 
description: "d" 
}, 
0505: { 
x: 7.5, 
description: "e" 
}, 
0504: { 
x: 7.5, 
description: "f" 
}, 
0512: { 
x: 10, 
description: "g" 
} 
} 

이 해시는 HTTP 응답에서 유래하지만 JSONModel를 사용하는 것은 매핑하고있는 NSDictionary 것을지도 할 수있는 유일한 방법이있다. 이 JSON을 NSDictionary에 매핑하면 (순서대로)이 순서가 지정되지 않은 데이터 시퀀스가 ​​혼합되어 나타납니다.

JSONModel 및 NSDictionary를 사용하여 시퀀스를 나누지 않고이 JSON을 매핑하는 방법은 무엇입니까?

+0

이 json을 NSDictionary로 변환하면 어떻게됩니까? –

+0

시퀀스가 ​​변경됩니다. – miletliyusuf

+2

주문한 NSDictionary와 같은 것이 없기 때문에 JSON 사전의 키 순서도 중요하지 않으므로 왜 주문 하시겠습니까? – rmaddy

답변

0

NSDictionary는 본질적으로 순서가 있습니다 :

Are keys and values in an NSDictionary ordered?

당신은 키 - 값 항목의 순서를 유지하려면, 당신은 NSDictionary 이외의 데이터 구조를 사용해야합니다. NSDictionary을 통해 데이터를 전달하는 라이브러리는 순서를 유지할 수 없습니다.

+0

NSHashTable을 사용하고 싶지만 JSONModel에서 객체를 매핑 할 수 없습니다. Java에서 HashMap과 같은 데이터 구조가 필요합니다. – miletliyusuf

+0

Java의 HashMap은 주문 보존도 아닙니다. (LinkedHashMap은 그렇다.) JSONModel이 NSDictionary를 반환하면, 그 순서는 이미 파괴되어있다. 주문을 받으려면 다른 라이브러리를 사용해야합니다. –

0

내가이 상황에서 해낸 일은 사전 외에도 별도의 배열로 사전 키를 정렬하는 것입니다. 정렬 된 키 배열을 사용하여 사전 값을 표시하는 방법을 결정하십시오.

+0

올바른 방법이 없기 때문에 사전 키를 정렬 할 수 없습니다. json에는 x 값이 있으며 정렬해야합니다. X 값의 확률 순서로 키를 정렬하면 시퀀스가 ​​변경 될 수 있습니다. – miletliyusuf

+0

아마도 데이터를 다른 형식으로 변환해야 할 것입니다. 값을 반복하고 json을 x 값 및 설명이있는 객체로 변환 한 다음이를 배열에 배치하고 x 값을 정렬합니다. – Wyatt

0

사전을 정렬 할 수 없지만 JSON이 객체의 배열 인 것처럼 보이기 때문에 ... in을 사용하여 결과 NSDictionary를 반복하고 변경 가능한 배열에 요소를 추가하십시오.

나중에 x 값을 비교하여 .sortInPlace를 사용하여 결과 배열을 정렬합니다.