我正在导入XML Feed并尝试将其转换为JSON以进行输出。我收到了这个错误:
TypeError: <xml.dom.minidom.Document instance at 0x72787d8> is not JSON serializable
不幸的是,我对Python几乎一无所知。我正在Google App Engine上开发这个。我可以使用一些帮助,因为我正在进行的那个小小的2小时黑客现在正处于第3天。
XML数据:
<?xml version="1.0" ?><eveapi version="2">
<currentTime>2009-01-25 15:03:27</currentTime>
<result>
<rowset columns="name,characterID,corporationName,corporationID" key="characterID" name="characters">
<row characterID="999999" corporationID="999999" corporationName="filler data" name="someName"/>
</rowset>
</result>
<cachedUntil>2009-01-25 15:04:55</cachedUntil>
</eveapi>
我的代码:
class doproxy(webapp.RequestHandler):
def get(self):
apiurl = 'http://api.eve-online.com'
path = self.request.get('path');
type = self.request.get('type');
args = '&'+self.request.get('args');
#assemble api url
url = apiurl+path
#do GET request
if type == 'get':
result = urlfetch.fetch(url,'','get');
#do POST request
if type == 'post':
result = urlfetch.fetch(url,args,'post');
if result.status_code == 200:
dom = minidom.parseString( result.content ) #.encode( "utf-8" ) )
dom2json = simplejson.dump(dom,"utf-8")
答案 0 :(得分:9)
我很快就会发现这一点 Python可能很棒 语言,但没有它的用户 知道如何实际记录任何东西 以清晰简洁的方式。
问题的态度无助于从这些相同的Python用户那里获得答案。
正如this related question的答案中所提到的,XML和JSON之间没有一对一的对应关系,因此转换无法自动完成。
在the documentation for simplejson
中,您可以找到它能够序列化的类型列表,它们基本上是本机Python类型(dict,list,unicode,int,float,True / False,None)。
因此,您必须创建仅包含这些类型的Python数据结构,然后您将这些类型提供给simplejson.dump()
。