我正在使用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期望第一个封闭的hogans集合末尾的逗号表示文件结束。所需的输出是
{
"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"},
"key2": {"innerkey1": "value1", … "innerkeyn": "valuen"}
}
答案 0 :(得分:1)
看起来你希望dumps
只为内部键发出部分JSON,我认为你不能让它做到这一点。我建议将整个字典(带有所有顶级键)传递给dumps
调用,以便它可以编写整个内容,或者手动处理外部大括号和键,只需使用{{ 1}}用于内部词典。
或者,您可以按原样使用dumps
,并在写出之前去除开始和结束括号(即只打印出json.dumps
)。
答案 1 :(得分:0)
通过编辑,您希望一个key1
存储多个结果?
{
"key1": [{"innerkey1": "value1", … "innerkeyn": "valuen"},
{"innerkey2": "value1", … "innerkeyn": "valuen"},
{"innerkey3": "value1", … "innerkeyn": "valuen"}]
}
这是在黑暗中的一种射击。从臀部开始。
答案 2 :(得分:0)
如果我理解正确,你想在每次迭代中输出一些'部分'json字符串(它本身不是有效的json),例如。
"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"},
但是json.dumps不输出'partial json',只输出有效的json。
所以,要么:
"key1":
部分,并仅对{"innerkey1": "value1", … "innerkeyn": "valuen"}
部分使用json.dumps