I suspect your error is hiding in <loop logic here>.  What do you expect
obj to be?  Your JSON should return a big dictionary with one key
("ganttgroups").  When you iterate over a dictionary in python, you get
the keys of that dictionary.  In this case, the string "ganttgroups".
You may be doing the following:

for obj in serializers.deserialize("json", gantt_data):
    do_something_to(obj['gantts'])

which returns an error, because it evaluates to "ganttgroups"['gantts']
(which would give you the error you see.

What you want is more like:

for obj in serializers.deserialize('json', gantt_data)['ganttgroups']:
    start = obj['start']
    for gantt in obj['gantts']:
        for row in gantt['rows']:
            print row['own']

In short, you're getting your dicts and lists mixed up, or your keys and
values.

Cheers,
Cliff


On Wed, 2009-09-02 at 10:40 -0700, Eric wrote:
> I forgot to mention that I am trying to deserialize the data as
> follows:
> 
> "
> ...
> gantt_data = request.POST.get('ganttdata')
> 
> for obj in serializers.deserialize("json", gantt_data):
>     <loop logic here>
> ...
> "
> 
> On Sep 2, 10:37 am, Eric <elezo...@gmail.com> wrote:
> > Hi,
> > I am attempting to parse a json string passed to my view via a form
> > post.   A simple example of my json structure is as follows (indented
> > for readability):
> >
> > {
> >     "ganttgroups":[
> >         {
> >             "gantts":[
> >                 {
> >                     "rows":[
> >                         {"stt":1, "end":2, "ttl":"test row - gr1 ga1
> > ta1",  "own":"Tim Johnson"},
> >                         {"stt":2, "end":3, "ttl":"my row (g1 t2)",
> > "own":"John Doe"},
> >                         {"stt":1, "end":2, "ttl":"test row - gr1 ga1
> > ta3", "own":"Mary Smith"}
> >                     ]
> >                 },
> >                 {
> >                     "rows":[
> >                         {"stt":1, "end":2, "ttl":"My 4th task",
> > "own":"Eric Johnson"},
> >                         {"stt":1, "end":2, "ttl":"my row (g2 t2)",
> > "own":"Jeff Smith"},
> >                         {"stt":1, "end":2, "ttl":"test row - gr1 ga2
> > t3", "own":"Bill Baker"}
> >                     ]
> >                 }
> >             ],
> >             "start":"2009-1-01"
> >         }
> >         ,{
> >             "gantts":[
> >                 {
> >                     "rows":[
> >                         {"stt":1, "end":2, "ttl":"row - gr2 ga1 t1",
> > "own":"Ted Tillman"},
> >                         {"stt":1, "end":2, "ttl":"row - gr2 ga1 t2",
> > "own":"Kim Crane"},
> >                         {"stt":1, "end":2, "ttl":"row - gr2 ga1 t3",
> > "own":"Bob Barker"}
> >                     ]
> >                 }
> >             ],
> >             "start":"2009-1-01"
> >         }
> >     ]
> >
> > }
> >
> > I would like to parse it so that I can loop over the pairs/arrays to
> > access the data. When I try to deserialize the data, I get the django
> > error "string indices must be integers". Can anybody please help me
> > determine what exactly this means and how I may fix this?  Is there
> > another method I should be using? I am obviously a bit of a newbie at
> > this so any help would be greatly appreciated.
> > 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to