我有一个这种格式的json文件
{
"details": {
"hawk_branch": {
"tandem": {
"value": "4210bnd72"
}
},
"uclif_branch": {
"tandem": {
"value": "e2nc712nma89",
"value": "23s24212",
"value": "12338cm82",
}
}
}
}
问题是,我需要保留所有value
,但是当我使用json.load
来加载这个文件时,我只得到一个value
,这很有意义,因为dict
只能保持唯一keys
。在
这是预期产量
^{pr2}$我读过这个答案,Python json parser allow duplicate keys像这样使用object_pairs_hook
def parse_object_pairs(pairs):
return pairs
# f is file
json.load(f, object_pairs_hook=parse_object_pairs)
但它以list
的形式返回整个json文件。在
我认为用lambda
作为object_pairs_hook
是有可能的,但是我不明白如何使用它。在
有人能引导我吗
您可以使用自定义的重复键解析器函数,该函数将
value
键的值转换为列表:因此:
^{pr2}$退货:
{'details': {'hawk_branch': {'tandem': ['4210bnd72']}, 'uclif_branch': {'tandem': ['e2nc712nma89', '23s24212', '12338cm82']}}}
要通过将列表转换为具有重复的
value
键的dict,将新的数据结构转储回原始的JSON格式,可以使用自定义的json.JSONEncoder
子类:因此:
将输出:
{"details": {"hawk_branch": {"tandem": {"value": "4210bnd72"}}, "uclif_branch": {"tandem": {"value": "e2nc712nma89", "value": "23s24212", "value": "12338cm82"}}}}
相关问题 更多 >
编程相关推荐