【问题标题】:Python key error when trying to generate json尝试生成 json 时出现 Python 键错误
【发布时间】:2015-10-21 18:03:42
【问题描述】:

我正在尝试生成 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”生成一个密钥错误,但我不明白为什么,因为它不是真正的密钥,而且我不知道为什么它认为它是一个密钥。谁能指点一下?

谢谢

【问题讨论】:

  • 您不应该真的通过字符串构建 JSON。建立字典并使用json.dumps()
  • 谢谢丹尼尔,JF 刚刚也告诉了我关于 json.dumps() 的信息。这更容易,也更干净。

标签: python json keyerror


【解决方案1】:

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

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

要创建json文本,你应该使用json模块:

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

【讨论】:

  • 谢谢!我要去看看我能不能让它工作,我会尽快接受它:)
猜你喜欢
  • 2022-01-04
  • 2021-12-26
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
相关资源
最近更新 更多