*work in web2py* def json_row_as_list(): if not request.env.request_method == 'GET': raise HTTP(403) import json table_name = request.args(0) id = request.args(1) if id.isdigit() and int(id) > 0: query = (db[table_name]['id'] == id) else: query = (db[table_name]['id'] > 0) rows = db(query).select() json_list = json.dumps(rows.as_list(), default = str, sort_keys = True) return dict(data = XML(json_list) )
*in web3py return an error when using XML() helper, but when not using XML() helper it works fine in web3py* *code* from yatl.helpers import XML @action('api/json_row_as_list/<table_name>/<id>', method = 'GET') @action.uses(db) def json_row_as_list(table_name, id): import json if id.isdigit() and int(id) > 0: query = (db[table_name]['id'] == id) else: query = (db[table_name]['id'] > 0) row = db(query).select() json_list = json.dumps(row.as_list(), default = str, sort_keys = True) return dict(data = XML(json_list) ) *result* ERROR:root:Traceback (most recent call last): File "/Users/sugizo/learn/python/web3py/web3py/core.py", line 416, in wrapper ret = dumps(ret) File "/Users/sugizo/learn/python/web3py/web3py/core.py", line 157, in dumps return json.dumps(obj, default=objectify, sort_keys=sort_keys, indent= indent) File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/__init__.py", line 238, in dumps **kw).encode(obj) File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py", line 201, in encode chunks = list(chunks) File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py", line 431, in _iterencode yield from _iterencode_dict(o, _current_indent_level) File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py", line 405, in _iterencode_dict yield from chunks File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/json/encoder.py", line 438, in _iterencode o = _default(o) File "/Users/sugizo/learn/python/web3py/web3py/core.py", line 146, in objectify return list(obj) File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/site-packages/yatl/helpers.py" , line 226, in __len__ return len(str(self)) File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/site-packages/yatl/helpers.py" , line 226, in __len__ return len(str(self)) File "/Users/sugizo/miniconda3/envs/python3_test/lib/python3.7/site-packages/yatl/helpers.py" , line 226, in __len__ return len(str(self)) [Previous line repeated 482 more times] RecursionError: maximum recursion depth exceeded while calling a Python object *code* from yatl.helpers import XML @action('api/json_row_as_list/<table_name>/<id>', method = 'GET') @action.uses(db) def json_row_as_list(table_name, id): import json if id.isdigit() and int(id) > 0: query = (db[table_name]['id'] == id) else: query = (db[table_name]['id'] > 0) row = db(query).select() json_list = json.dumps(row.as_list(), default = str, sort_keys = True) return XML(json_list) *result* <h1>Critical error while processing request: /test/api/json_row_as_list/bank/1</h1>ERROR:tornado.access:500 GET /test/api/json_row_as_list/bank/1 (127.0.0.1) 2.65ms *execute in terminal* curl -X GET -i http://localhost:8000/test/api/json_row_as_list/bank/1 best regards, stifan -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/d7f52f3b-459f-4168-9017-1267086373c8%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.