<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 3/11/2010 3:30 PM, T.J. Simmons wrote:
    <blockquote
      cite="mid:AANLkTintKCuOWm=p70+ofB+JyUwatDL4SedkBGJ=tsEM@mail.gmail.com"
      type="cite"><font face="arial,helvetica,sans-serif">Hi all, got a
        question regarding serializing classes that I've defined. I have
        some classes like</font>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">class Foo:</font></div>
      <div><font face="arial,helvetica,sans-serif">     def
          __init__(self, x, y):</font></div>
      <div><font face="arial,helvetica,sans-serif">          self.x = x,
          self.y = y</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">then a class that can
          contain multiple Foos, such as:</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">class Bar:</font></div>
      <div><font face="arial,helvetica,sans-serif">     def
          __init__(self):</font></div>
      <div><font face="arial,helvetica,sans-serif">          self.foos =
          [Foo(a, b), Foo(1, 2)]</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">While that's a gross
          oversimplification of the real structure (it gets much, much
          more nested than that), that's a pretty decent overview. The
          actual data for this is coming from a pseudo-XML file without
          any actual structure, so I wrote a parser according to the
          spec given to me, so I now have all the data in a series of
          classes I've defined, with actual structure.</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">What I'm wanting to
          do is take this data I have and spit it out into JSON, but I
          really don't see a good way (I'm new to Python, this is my
          first real project with it).</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">I've defined a method
          in Foo, such as:</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">def toDict(self):</font></div>
      <div><font face="arial,helvetica,sans-serif">     return dict(x =
          self.x, y = self.y)</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">but that obviously
          isn't going to work out like I hope when I try to serialize
          Bar, with the multiple Foos.</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">Does anyone have a
          great way of doing this? This has been a pretty much non-stop
          learning/codefest the past few days and I'm out of ideas for
          this, which is the last part of the project.</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">Let me know if I can
          clarify in any way.</font></div>
      <div><font face="arial,helvetica,sans-serif"><br>
        </font></div>
      <div><font face="arial,helvetica,sans-serif">Thanks,</font></div>
      <div><font face="arial,helvetica,sans-serif">T.J.</font></div>
    </blockquote>
    <br>
    Python has a JSON lib that may be what you want, alternatively you
    could have a common base class with a method that iterates through
    its own member variables (see dir() function) as key/value pairs,
    recursing when it finds further instances of that base class (see
    isinstance() function). That would let you iterate through all
    member variables in the object hierarchy from the top level object,
    and do what you wish with them. I'm sure there are other ways too.<br>
    <br>
    Cheers, JB<br>
    <br>
  </body>
</html>