json.loads - > TypeError:JSON对象必须是str,而不是' dict'

时间:2017-11-13 22:22:38

标签: python json mod-wsgi pyramid

我正在使用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"})
  ...

1 个答案:

答案 0 :(得分:2)

request.json_body已经将身体解码为python对象。如果您希望自己解码,那么您应该通过loads(request.body.decode(request.charset), ...)使用原始主体。