On Tue, Jul 30, 2013 at 2:11 PM, Matt <mbroa...@gmail.com> wrote:

>
>
> On Tuesday, July 30, 2013 11:51:08 AM UTC-4, Jonathan Lundell wrote:
>
>> On 30 Jul 2013, at 8:34 AM, Anthony <abas...@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?
>>
>>
>>
> Here is a snippit of what we are trying to do:
>
>
>
> import simplejson
>
> @request.restful()
> def jsonlisttest():
> response.view = 'generic.json'
>
> def GET(*args, **vars):
>
> sample_raw_rpc_response = '["one", "two", "three"]'
>
> sample_rpc_response = simplejson.loads(sample_raw_rpc_response)
>
> return sample_rpc_response
>
> def POST(*args, **vars):
>
> return dict()
>
> def PUT(*args, **vars):
>
> return dict()
>
> def DELETE(*args, **vars):
>
> return dict()
>
> return locals()
>
>
Ack, that will teach me for using the google groups interface instead of
email.. anyway, assume that snippit was actually formatted properly. You'll
see that I've added the basic json loading in there, but that is not the
actual issue. The issue is that a python list is returned, instead of a
dict or just a string, therefore bypassing any of the generic views and
auto-concatenating the list into a single string when accessed.

Matt



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

-- 

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