2016-06-13 26 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時(你可以猜到),這個無序的數據序列混合起來。

那麼,如何映射這個JSON,而不會使用JSONModel和NSDictionary分解它的序列?

+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似乎是一個對象數組,所以迭代您的結果NSDictionary for ... in並將元素添加到可變數組中。

然後通過比較x值,使用.sortInPlace對結果數組進行排序。