On 30 Jul 2013, at 8:34 AM, Anthony <abasta...@gmail.com> wrote: > Can you show your code? You say you "return locals()", but locals() produces > a dictionary, so it should ultimately execute a view. Or are you just > returning the list directly?
A list directly (see the code fragment below). Since generic.json serializes response._vars, it doesn't care about anything in env. You *could* write a view that accepts a dict with a list (or dict) as a well-known name and serialize that, but it's not what generic.json does. > > Anthony > > On Tuesday, July 30, 2013 10:28:53 AM UTC-4, Matt wrote: > > > On Tuesday, July 30, 2013 10:26:45 AM UTC-4, Jonathan Lundell wrote: > On 30 Jul 2013, at 12:22 AM, Niphlod <nip...@gmail.com> wrote: >> can you explain better what's going on ? the generic json view (as any other >> view) is made to serialize a python object to something (in json's case, a >> json string). >> If you already return a string because your code encodes it already, than >> you don't need any view, because the job the view usually does has been done >> already by your code. > > The explanation isn't quite clear. I believe he's returning a list, intending > that to be serialized as JSON. But web2py serializes anything that's not a > dict as a string, so generic.json (for example) is never used. > > The question is: what should happen when a controller returns a list? The > JSON serializer is happy to serialize a list. Is there any downside in doing > it? Does it make any sense right now for a controller to return a list? > > > Exactly. Apologies for lack of clarity. > > Matt >> >> On Monday, July 29, 2013 11:07:35 PM UTC+2, Matt wrote: >> Hi, >> We're running into an issue with our restful api where a certain method is >> returning a json string (eg: " ['one', 'two', 'three'] "), however web2py >> wants to render this as a string even when the request.extension is forced >> to json, and the response.view is forced to generic.json. I've tracked the >> issue down to gluon/main.py:231 where it checks if "page" is a dict, and >> what seems to be happening is that the valid json string above is instead >> being concatenated as a string representation. Adding this below the check >> for dict seems to fix it, but I'm not sure how well it fixes the problem: >> >> elif isinstance(page, list): >> response._vars = page >> run_view_in(response._view_environment) >> page = response.body.getvalue() >> >> Any suggestions for other ways to go about fixing this? >> >> Thanks, >> Matt > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.