尝试生成json时出现Python密钥错误

时间:2015-10-21 18:03:42

标签: python json keyerror

我正在尝试生成JSON,因此我可以使用bigquery API以编程方式生成新视图,但我遇到了一些困难。我编写了一个函数,它将一个包含名称和数据类型的字典作为参数,然后迭代遍历此循环以创建json,但是当我尝试这样做时,我收到了一个键错误。

def generateFieldJsonForSchema(d):
returnList = []
for name, type in d.iteritems():
    print name
    print type

    print '{"thisName":"{0}"}'.format(name)

这是一个示例字典

{u'Coin_Balance': 'FLOAT',
 u'Item_Received_SKU': 'STRING',
 u'Player_Level': 'FLOAT',
 u'Player_XP': 'FLOAT',
 u'Price': 'FLOAT',
 u'SKU': 'STRING',
 u'Ticket_Balance': 'FLOAT'}

Python(anaconda python)正在为'thisName'生成一个关键错误,但我不明白为什么,因为它不是一个真正的密钥,我不知道为什么它认为它是一个关键。有人可以给我一些指示吗?

由于

1 个答案:

答案 0 :(得分:4)

如果在格式字符串中需要文字{}大括号;你需要通过将它们加倍来逃避它们{{}}

>>> '{"name":whatever}'.format()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '"name"'
>>> '{{"name":whatever}}'.format()
'{"name":whatever}'

要创建json文本,您应该使用json module:

>>> import json
>>> d = dict(zip('abc', range(3)))
>>> for name in d:
...     print(json.dumps({"thisName": name}))
... 
{"thisName": "c"}
{"thisName": "b"}
{"thisName": "a"}