【发布时间】:2014-02-13 05:47:59
【问题描述】:
我正在处理一个 CSV 文件,并尝试使用 JSON.dumps 从那里写入 JSON 文件。我想要的数据结构是
{
"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"},
...
...
...
}
然而,JSON.dumps 语法似乎要求我写
json.dumps({"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"}})
这极大地改变了结构的含义(并且不是有效的 JSON,因为转储在列表理解中被迭代。
我猜我对 dict 语法的理解有误,但不能完全理解。
编辑:编辑以更改大括号类型。问题仍然是 {"key1" ... } 正在为每个项目编写,我希望一组 hogan 大括号环绕整个结构,但是
json.dumps("key1": {"innerkey1": "value1", … "innerkeyn": "valuen"})
在分号上抛出语法错误
EDIT2: json.dumps 被调用 n 次,每次都被写入文件。输出文件如下所示:
{"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"}},
{"key2": {"innerkey1": "value1", … "innerkeyn": "valuen"}}
这种语法使 JSON 期望在第一个封闭的 hogan 集末尾的逗号表示文件结束。所需的输出是
{
"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"},
"key2": {"innerkey1": "value1", … "innerkeyn": "valuen"}
}
【问题讨论】:
-
key1的值看起来像dict,但您在它周围使用了list大括号。 -
所需的数据结构无效。
[]应该是{} -
{key: [key:val]}应该是{key: {key:val}} -
你的第一个
dumps怎么没有给你想要的? -
它在多行上运行,所以我得到 {"key1: {…}}, {"key2": {…}},这使得 JSON 在第一个逗号处期望 EOF。跨度>