python3:json可以解码为元组吗?

时间:2018-12-16 16:22:58

标签: python json

import json
t = (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))
j = json.dumps(t)
x = json.loads(j)
print(t) # (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))
print(x) # [[[9, 1, 4]], [], [[14, 5, 10]], [[0, 4, 5]]]

我如何直接从json.loads()将json字符串解码为(层次结构较深的)元组?

我知道json编码将元组和列表都保存为“数组”,但实际上,我不可变的“ t”变量非常大且只读,因此元组样式(据我所知)更快,更紧凑在内存中而不是在列表样式中。

想法?谢谢!

1 个答案:

答案 0 :(得分:1)

JSON JavaScript Object Notation 的缩写,JavaScript中有一种名为 array 的数据结构,为了定义数组,我们使用方括号{ {1}} [不像Python中的元组一样,将] (括起来。

因此,只要您尝试将元组转换为字符串),它就会在内部更改为数组形式,如 JavaScript 中的形式,并在 Python 中列出周围带有括号json.dumps() [

]

如果您的意图是将元组转换为字符串,然后再次从该字符串表示形式转换为实际的 Python 对象(这里是 tuple ),那么这里就是解决方案。

import json
t = (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))

j = json.dumps(t)
x = json.loads(j)
print(t) # (((9, 1, 4),), (), ((14, 5, 10),), ((0, 4, 5),))
print(x) # [[[9, 1, 4]], [], [[14, 5, 10]], [[0, 4, 5]]]