从数据库查询输出创建JSON字符串

时间:2018-03-21 15:43:06

标签: python json python-3.x

我尝试从数据库查询的输出创建一个简单的JSON对象,如下所示:

json_obj= {
           '1': 'test_1',
           '2': 'test_2',
           '3': 'test_3',
           '4': 'test_4',
           '5': 'test_5',
           }

到目前为止,我一直在尝试循环和json.dumps,但无法正确使用它:

cat_list = []
cats = Category.query.all()
for cat in cats:
    item = {
            cat.id: cat.name
           }
    cat_list.append(item)

json_cat_list = json.dumps(cat_list)

这确实创建了一个JSON对象,但不完全是我正在寻找的东西。

json_obj= {
           {'1': 'test_1'},
           {'2': 'test_2'},
           {'3': 'test_3'},
           {'4': 'test_4'},
           {'5': 'test_5'},
           }

有关如何执行此操作的任何建议吗?

非常感谢

1 个答案:

答案 0 :(得分:5)

您需要单个 dict 对象,而不是它们的列表。

cat_dict = {}                         # 1
for cat in Category.query.all():
    cat_dict[cat.id] = cat.name       # 2

json_cat_dict = json.dumps(cat_dict)  # 3

或者,(如下面提到的@Daniel Roseman)简明扼要,你可以将所有内容压缩成一个词典理解:

cat_dict = {cat.id: cat.name for cat in Category.query.all()}