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