我正在使用烧瓶。我有一个烧瓶功能,接收一些张贴的json,看起来像:
from django.contrib.postgres.operations import HStoreExtension
class Migration(migrations.Migration):
...
operations = [
HStoreExtension(),
...
]
印刷的json看起来像:
@app.route('/index',methods=['POST'])
def index():
import json
json = request.get_json(force=True) # receives request from php
for j in json:
print str(j)
进入的json记录数是可变的。我需要将值加载到类似的列表列表中:
{u'token': u'146bf00b2cb96e6c425c2ab997637', u'a': u'aaa'}
{u'token': u'146bf00b2cb96e6c425c2ab3f7417', u'a': u'bbb'}
{u'token': u'146bf00b2cb96e6c425c2ab3f5692', u'a': u'ccc'}
我试过了:
[{u'token': u'146bf00b2cb96e6c425c2ab997637', u'a': u'aaa'},{u'token': u'146bf00b2cb96e6c425c2ab3f7417', u'a': u'bbb'} ....]
但是,这给了我上面列出的错误。我究竟做错了什么?
答案 0 :(得分:2)
您不需要 来生成列表对象,因为您已经拥有该列表。 json
变量引用它,这就是您的for j in json:
循环首先起作用的原因。
您的错误源于尝试遍历整数len(json) - 1
:
test = [{'a': j[i]['ad'], 'token':j[i]['token']} for i in len(json)-1]
# ^^^^^^^^^^^
也许您想在那里使用range(len(json))
?并不是说需要在这里生成整数,你可以再次遍历json
列表以提取你想要的内容:
test = [{'a': entry['a'], 'token': entry['token']} for entry in json]
但这只是创建现有词典的副本,除非他们有更多的密钥,你没有在你的问题中包括。