<!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>