Python自定義對象轉json、jso
- 2020 年 1 月 6 日
- 筆記
自定義對象轉Json:自己探索出來的,直接看下面簡單的例子吧。
#自定義對象轉換成json import json #自定義對象 class C: key1=list key2=str key3=int key4=tuple def __init__(self,key1,key2,key3,key4): self.key1=key1 self.key2=key2 self.key3=key3 self.key4=key4 #實例化自定義類 c=C([1,2,3],'str',0,('yuanzu','元組')) #json.dumps方法不能對自定義對象直接序列化,首先把自定義對象轉換成字典 overdict = c.__dict__ # 此時就可以用json.dumps序列化了 result=json.dumps(overdict, ensure_ascii=False) print(result) print(type(result))
二、Json 轉自定義對象:暫時查不到 Json 轉 Python 對象的傻瓜辦法,這裡貼一個網友的來自:
https://blog.csdn.net/TaiJi1985/article/details/51344879
發現更簡單的辦法繼續分享。
# 訂製類 import time class D(object): def __init__(self,map): self.map = map def __setattr__(self, name, value): if name == 'map': object.__setattr__(self, name, value) return True print ('set attr called ',name,value) self.map[name] = value def __getattr__(self,name): v = self.map[name] if isinstance(v,(dict)): return (DictObj(v)) if isinstance(v, (list)): r = [] for i in v: r.append(DictObj(i)) return (r) else: return (self.map[name]) def __getitem__(self,name): return (self.map[name]) if __name__ == '__main__': # json轉換成字典 import json #實際上JSON就是Python中的字元串,所以在這裡首先定義一個字元串充當從網路請求中得到的json json_obj='{"key1":[1,2,3],"key2":"str2"}' # 注意json鍵值對的邊界符只能用雙引號 t=json.loads(json_obj) # 字典轉換成自定義對象 model = D(t) print (model.key2)
三、更新Json轉自定義字元串:
import json class Ook(): name=str def __init__(self, d): self.__dict__ = d if __name__ == '__main__': data = {'name' : 'ACME','shares' : 100,'price' : {'name' : 'ACME'}} json_str = json.dumps(data) result = json.loads(json_str, object_hook=Ook) print(result.name) print(result.shares) print(result.price.name)