提问者:小点点

Python迭代字典并作为JSON发送


下面的代码只列出了字典中的第一组值,如下所示。 如何将所有值显示为JSON

{"born": 2000, "first": "John", "last": "Sam"}
@cherrypy.expose
def values(self):
    docs = db.collection(u'users').stream()
    results = {}
    for doc in docs:
        results = json.dumps(doc.to_dict())
        print(results) # This prints all the values          
    return results  # This returns only the first set

数据库中有许多类似的值

{"born": 2000, "first": "James", "last": "tom"}
{"born": 2001, "first": "George", "last": "Kevin"}

共1个答案

匿名用户

您将在每次迭代中覆盖results。 尝试如下更改代码:

@cherrypy.expose
def values(self):
    docs = db.collection(u'users').stream()
    results = []
    for doc in docs:
        results.append(json.dumps(doc.to_dict()))
    print(results)    
    return results

注意,results现在是一个列表,我们在每个迭代中都在其中追加一个字典。 另外,print(results)现在在循环之外,否则它将在每次迭代中打印结果。