![](/img/trans.png)
[英]How to extract a a specific object from JSON file using python json
[英]How to extract Python object from JSON object?
我可以按原樣從Python對象獲取JSON字符串:
def myserialize(obj):
return obj.__dict__
class A:
def __init__(self):
self._filename = AString()
self._size = AnInt()
self.objectString = ObjectContainingAString()
self.arrayOfObject = ....
def get_json_string(self):
return json.dumps(self.__dict__,default=myserialize,indent=4,sort_keys=True)
JSON輸出如下所示
{
"_filename" : "value_of_string"
"_size" : value_of_int
"objectString": {
"string" : "value_of_string"
}
"arrayOfObject" : [
{
"obj1" : {
...
}
},
{
"obj2"...
}
]
}
這正是我想要的! 一種將Python“復雜”對象轉換為JSON字符串的簡單方法。
問題:但現在,我想將此字符串轉換為相同的“復雜” Python對象!
場景:場景是我還有一些(不同的)“復雜”對象,我想從JSON字符串來回轉換。
如果您提供的解決方案必須以某種方式在字符串中包含ID,則表明“這僅是XYZ類型的對象的JSON字符串”是可以的,因為我只有幾個“復雜”對象(5/6)。
編輯1
完整方案 :我有6個二進制文件,其中包含嵌入式軟件的配置。 這顯然不是人類可讀的。
我目前正在使用Python解析二進制文件並提取其內容以獲得易於閱讀的版本。 (JSON或其他東西!)JSON至少具有將Python對象轉換為一行包含所有有關一個配置文件的信息的優勢。
人們現在應該能夠在(JSON或其他)文本配置文件中編輯一些值。
我希望能夠將文本文件轉換回相應的Python對象,並對其進行序列化以獲得修改后的二進制文件!
編輯結束
我看到的最簡單的可重用解決方案涉及兩個步驟:
setattr
填充類的字段 這是表達為python代碼的相同想法:
class A:
def __init__(self, input_dict=None):
if input_dict is not None:
for k, v in input_dict.items():
setattr(self, k, v)
else:
self._filename = AString()
self._size = AnInt()
self.objectString = ObjectContainingAString()
self.arrayOfObject = ....
...
# Assume we have a list of json strings created by your json export
# Now parse json strings and turn them into objects of class A
for json_str in json_strs:
new_object = A(input_dict=json.loads(json_str))
# Do something with new_object...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.