我正在使用Python(版本:3.4.4)Pyramid框架来接收json请求,并使用json.loads将收到的json转换为python对象。当使用TestApp对下面列出的应用程序进行单元测试时,一切正常,但是,当通过Apache mod_wsgi使用时,我确实在json.loads(...)中收到以下错误
TypeError:JSON对象必须是str,而不是' dict'
知道为什么吗?
观看代码:
@view_config(route_name='api.analysis', request_method='POST', renderer='json')
def fetch_my_info(request):
data = json.loads(request.json_body, object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))
...
测试代码:
self.testApp = TestApp(app)
response = self.testApp.post_json('/v1/info/analysis', params={"id", "123"})
...
答案 0 :(得分:2)
request.json_body
已经将身体解码为python对象。如果您希望自己解码,那么您应该通过loads(request.body.decode(request.charset), ...)
使用原始主体。