TypeError:'int'对象在解析JSON时不可迭代

时间:2015-09-02 16:45:40

标签: python json flask

我正在使用烧瓶。我有一个烧瓶功能,接收一些张贴的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'} ....]

但是,这给了我上面列出的错误。我究竟做错了什么?

1 个答案:

答案 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]

但这只是创建现有词典的副本,除非他们有更多的密钥,你没有在你的问题中包括。