[英]Python: Serialize suds object to JSON
我正在使用suds調用SOAP API,它將數據作為對象而不是原始XML返回。 我想保存原始響應的副本以及我解析的內容,最終目標是存儲為JSON(我目前正在使用TinyDB進行測試)。
整體流程如下:
我將suds對象轉換為dict的腳本是:
def makeDict(response):
out = {}
for k, v in asdict(response).iteritems():
if hasattr(v, '__keylist__'):
out[k] = makeDict(v)
elif isinstance(v, list):
out[k] = []
for item in v:
if hasattr(item, '__keylist__'):
out[k].append(makeDict(item))
else:
out[k].append(item)
else:
out[k] = v
return out
但是,有時當我運行makeDict(object)
並嘗試序列化為JSON時,我會收到如下類型錯誤:
File "C:\Python27\Lib\json\encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: (Date){
Day = 7
Month = 8
Year = 2004
} is not JSON serializable
這個錯誤讓我失望,因為:
Date
出現在序列化期間不會拋出錯誤的其他記錄中 有沒有人知道這里發生了什么? 它看起來好像正在嘗試序列化原始對象,但我插入到TinyDB中的所有內容都已經通過makeDict
運行
我想我會回答我自己的問題而不是刪除它以防其他人遇到這個問題。
suds對象有時包含一個列表,該列表又包含其他suds對象。 makeDict()
函數不一定達到最深層次的嵌套,因此它有時會返回一個包含suds對象的dict,該對象無法序列化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.