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.


Reply via email to