我有一本这样的字典
{
"library": [
{
"_type": "Host",
"parameters": "JSON STRING",
"superclassOf": [
{
"_type": "LinuxHost",
"superclassOf": [
{
"_type": "Ubuntu",
"superclassOf": [
{
"_type": "Ubuntu1604",
"parameters": "JSON STRING"
}
]
}
]
}
]
}
]
}
其中JSON STRING
是字符串形式的dict(例如'{"property1":"value1","property2":"value2"}'
)。
我要寻找的是一种方法,可以重新导航supeclassOf
属性,将这些Json字符串转换为Json的真实部分,并在编辑后返回完整的dict
编辑:注意supeclassOf
的值是列表。所以到处都有superclassOf
可以有多个元素,每个元素都有(或没有)属性parameters
和superclassOf
EDIT2使用Prem-Anand的答案,我得到以下错误:
Traceback (most recent call last):
File "C:/Users/ceccolig/PycharmProjects/api/api.py", line 61, in <module>
main()
File "C:/Users/ceccolig/PycharmProjects/api/api.py", line 52, in main
process_list_or_dict(library)
File "C:/Users/ceccolig/PycharmProjects/api/api.py", line 45, in process_list_or_dict
process_list_or_dict(v)
File "C:/Users/ceccolig/PycharmProjects/api/api.py", line 45, in process_list_or_dict
process_list_or_dict(v)
File "C:/Users/ceccolig/PycharmProjects/api/api.py", line 45, in process_list_or_dict
process_list_or_dict(v)
[Previous line repeated 5 more times]
File "C:/Users/ceccolig/PycharmProjects/api/api.py", line 43, in process_list_or_dict
ld[k] = process_str(v)
File "C:/Users/ceccolig/PycharmProjects/api/api.py", line 37, in process_str
return json.loads(s)
File "C:\Users\ceccolig\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Users\ceccolig\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\ceccolig\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
您可以使用
json.loads
将json字符串转换为dict。浏览dict的每个元素,检查它是dict类型还是list或string类型,并相应地处理每个类型示例
输出
好吧,我希望我找到你了With reference to this question,我修改了答案,使它适合您。希望这就是你想要的:
编辑
如果您只想转换json
相关问题 更多 >
编程相关推荐