我有一些代码正在从数据库中选择一些数据。
它返回一个列表:
selects = [(2, '4'), (2, '17'), (3, '65'), (1, '54'), (2, '14'),...]
我想将此列表转换为JSON对象,所以我这样做:
selects = json.dumps(selects)
给我这样的值:
[[2, "4"], [2, "17"], [3, "65"], [1, "54"], [2, "14"], ...]
在那之后,我想编写一个for
循环以获取字典的每个对象并保存到var中。例如:
[[2, "4"]]
var1 = 2
var2 = "4"
但是我在提取所需的值时遇到了问题。当我尝试var = json[0]
时,它只会返回[
。
我的想法是制作一个for
以考虑json中的所有对象,然后将它们保存到var中,然后发送给另一个进程...
如何保存上面的示例中的值?
这是我正在使用的代码:
import json
class Pull():
def process(self, **kwargs):
data = kwargs.get('data')
client = kwargs.get('client')
postgres = kwargs.get('postgres')
selects = postgres.select(data_type='session')
selects = json.dumps(selects)
for select in selects:
var1 = select[0]
var2 = select[1]
sessions = client.get_sessions(city=var1, cinema=var2)
答案 0 :(得分:1)
这是两天来第三次json.dumps
被无故使用。...selects
已经是列表 / 词典,则无需将其传递给返回 string 的json.dumps
(因此select[0]
no不会返回第一个字符)。
删除行selects = json.dumps(selects)
答案 1 :(得分:1)
selects = json.dumps(selects)
是一个字符串。进行selects[0]
给出第一个字符。
您不想将数据序列化为JSON来处理它们。保持数据的真实状态,并将其视为python列表。
答案 2 :(得分:1)
这里混淆的一部分是术语,一部分是不必要的复杂性。两者都可以解决。
您拥有的JSON对象不是字典。它是一个字符串,包含嵌套列表的序列化表示。正如您所期望的,从字符串开始,select[0]
是字符串的第一个字符,select[1]
是字符串的第二个字符,等等。
序列化时,无论是JSON还是其他格式,都可以发送或记录。 JSON数据无意用作数据。如果您需要实际的列表,则可以使用原始的,未序列化的表单:
selects = postgres.select(data_type='session')
for select in selects:
var1 = select[0]
var2 = select[1]
sessions = client.get_sessions(city=var1, cinema=var2)