如何在Python中将XML转换为JSON

时间:2009-01-25 15:06:34

标签: python xml json

  

可能重复:
  Converting XML to JSON using Python?

我正在导入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")

1 个答案:

答案 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()