将dict转储到JSON时保持顺序

90a*_*yss 5 python json flask

我想将数据库查询的结果序列化为JSON.每行都有一些列,我添加到一个字典.列按特定顺序排列,但在序列化数据时,顺序会发生变化.我尝试使用过OrderedDict,但仍然看到了同样的问题.如何维护列的顺序?

res = {'a': i[0], 'b': i[1], 'c': i[2]}
return jsonify(res=res)
Run Code Online (Sandbox Code Playgroud)
res = OrderedDict()
res['a'] = i[0]
res['b'] = i[1]
res['c'] = i[3]
return jsonify(res=res)
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 6

Python dicts 和 JSON 对象没有顺序,因此没有直接的方法可以做到这一点。在 Python 中,OrderedDict维护插入顺序,但在 JSON 中没有等价物。您可以将 dict 转换为其项目的列表,因为列表是有序的。

data = OrderedDict()
data['a'] = 1
data['b'] = 2
jsonify(data=list(data.items()))
Run Code Online (Sandbox Code Playgroud)

如果您需要知道这个特定列表实际上是一个有序的 dict,您可以使用标记方案来标记每个值的类型。这变得相当复杂。您可以在Flask 的 session serializer 中找到它的示例。