By the way, I'm using Ubuntu 10.10 and the current version of Web2Py:
1.94.6

On 21 abr, 13:31, Franzé Jr. <franz...@gmail.com> wrote:
> I think so
>
> On Apr 20, 6:09 pm, Rafael Sales <rafael...@gmail.com> wrote:
>
> > Hello,
> > I'm facing a very tricky error with JSON.
> > I have an action that must return a json object with the results of a
> > select. The select must return fields from two tables. When I use this
> > kind of select return fields from two or more tables, the simple json
> > cannot serialize the result of the select.
> > [Code A] Here's my code:
> > def getDespesasPorHospedagem():
> >     id_locado = request.vars.id_locado
> >     if id_locado == None:
> >         return response.json({'despesas': []})
>
> >     orderBy = db.despesa.id.lower()
> >     query = ((db.despesa.id_locado == id_locado) &
> >              (db.despesa.id_servico == db.servico.id))
> >     despesas = db(query).select(db.despesa.ALL, db.servico.ALL,
> > orderby = orderBy)
>
> >     return response.json({'despesas': despesas})
>
> > Invoking the URL (.../getDespesasPorHospedagem?id_locado=100) throws
> > the following error:http://pastebin.com/PsX8dD4e
> > Changing the return expressions respectively to: "return dict(despesas
> > = [])" and "return dict(despesas = despesas)", the URL above works
> > without any error and shows the result dictionary, but:
> >  - the URL (.../getDespesasPorHospedagem.json?id_locado=100) returns
> > "no json" and
> >  - the URL (.../getDespesasPorHospedagem.xml?id_locado=100) returns
> > the correct XML.
>
> > [Code B]
> > When I change my action as below, which have the same effect for me
> > although less concise, the return object can be serialized
> > successfully. And note that I'm using the same queries:
> > def getDespesasPorHospedagem():
> >     id_locado = request.vars.id_locado
> >     if id_locado == None:
> >         return response.json({'despesas': [], 'servicos': []})
>
> >     orderBy = db.despesa.id.lower()
> >     query = ((db.despesa.id_locado == id_locado) &
> >              (db.despesa.id_servico == db.servico.id))
> >     despesas = db(query).select(db.despesa.ALL, orderby = orderBy)
>
> >     orderBy = db.despesa.id.lower()
> >     query = ((db.despesa.id_locado == id_locado) &
> >              (db.despesa.id_servico == db.servico.id))
> >     servicos = db(query).select(db.servico.ALL, orderby = orderBy)
>
> >     return response.json({'despesas': despesas, 'servicos': servicos})
>
> > So... is this a bug?
> > Rafael Sales
>
>

Reply via email to