2015-11-04 38 views
3

我想將數據庫查詢的結果序列化爲JSON。每行都有許多列,並添加了字典。這些列按照特定順序排列,但是當我序列化數據時,順序會發生變化。我嘗試使用OrderedDict,但仍然看到相同的問題。我怎樣才能保持列的順序?將傾銷字典保留爲JSON時的維護順序

res = {'a': i[0], 'b': i[1], 'c': i[2]} 
return jsonify(res=res) 
res = OrderedDict() 
res['a'] = i[0] 
res['b'] = i[1] 
res['c'] = i[3] 
return jsonify(res=res) 
+6

字典不保證順序。你可以嘗試'OrderedDict',但我不知道'jsonify'會如何處理 - 如果訂單很重要,最好使用有序的數據結構, – jonrsharpe

+0

我試過使用OrderedDict,但仍然沒有運氣!請檢查我的更新後的文章 – 90abyss

+0

稍後用鍵對json進行排序。 jsonify破壞字典的順序。 – economy

回答

2

的Python類型的字典和JSON對象沒有訂單,所以沒有直接的方法來做到這一點。在Python中,OrderedDict維護插入順序,但JSON中沒有等效項。您可以將字典轉換爲其項目列表,因爲列表是按照順序排列的。

data = OrderedDict() 
data['a'] = 1 
data['b'] = 2 
jsonify(data=list(data.items())) 

如果你需要知道,這個特殊的名單實際上是一個有序的字典,您可以使用標記方案來標記每個值的類型。這變得相當複雜。你可以在Flask's session serializer找到它的一個例子。