我正在处理一个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期望第一组包含的流氓末尾的逗号发出文件结束的信号。所需的输出是
{
"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"},
"key2": {"innerkey1": "value1", … "innerkeyn": "valuen"}
}发布于 2014-01-22 22:55:42
看起来,您希望dumps只为内部键发出部分JSON,我认为您无法做到这一点。我建议将整个字典(带有所有顶级键)传递给dumps调用,这样它就可以编写全部内容,或者手动处理外部大括号和键,只对内部字典使用dumps。
或者,您可以按原样使用json.dumps,并在写出开始和结束大括号之前去掉它们(即只打印出the_json[1:-1])。
发布于 2014-01-22 22:44:44
通过编辑,您希望一个key1存储多个结果?
{
"key1": [{"innerkey1": "value1", … "innerkeyn": "valuen"},
{"innerkey2": "value1", … "innerkeyn": "valuen"},
{"innerkey3": "value1", … "innerkeyn": "valuen"}]
}这是在黑暗中拍摄的。从臀部开始。
发布于 2014-01-22 22:58:17
如果我正确理解,您希望在每次迭代中输出一些“部分”json字符串(它本身不是有效的json)。
"key1": {"innerkey1": "value1", … "innerkeyn": "valuen"},但是json.dumps不输出“部分json”,只输出有效的json。
因此,要么:
"key1":部件,只对{"innerkey1": "value1", … "innerkeyn": "valuen"}部件使用json.dumpshttps://stackoverflow.com/questions/21295308
复制相似问题