【发布时间】:2023-03-11 15:06:02
【问题描述】:
我有这样的字典
{
"library": [
{
"_type": "Host",
"parameters": "JSON STRING",
"superclassOf": [
{
"_type": "LinuxHost",
"superclassOf": [
{
"_type": "Ubuntu",
"superclassOf": [
{
"_type": "Ubuntu1604",
"parameters": "JSON STRING"
}
]
}
]
}
]
}
]
}
其中JSON STRING 是字符串形式的字典(例如'{"property1":"value1","property2":"value2"}')。
我正在寻找的是一种递归导航supeclassOf属性并将这些Json字符串转换为json的真实部分,并在编辑后返回完整字典的方法。
编辑:注意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 字符串转换为 json 的实数部分" 是什么意思?
-
@HichamZouarhi 我真的不知道从哪里开始......
-
@MisterNox 我的意思是我可以访问这些密钥。如果是字符串,则无法完成
-
好吧,您可以将 json 数据转换为列表/字典,因此访问它们非常简单,但给我一个场景。如果我访问它们该怎么办?那我可以给你举个例子