如何使用app引擎Python webapp2正确输出JSON?

Rya*_*yan 37 google-app-engine json webapp2

现在我正在做这个:

self.response.headers['Content-Type'] = 'application/json'
self.response.out.write('{"success": "some var", "payload": "some var"}')

有没有更好的方法来使用一些库?

Lip*_*pis 60

是的,您应该使用Python 2.7支持的json:

import json

self.response.headers['Content-Type'] = 'application/json'   
obj = {
  'success': 'some var', 
  'payload': 'some var',
} 
self.response.out.write(json.dumps(obj))
Run Code Online (Sandbox Code Playgroud)

  • 卫生署!我一直在使用`self.response.headers ['Content-Type:'] ='application/json'`并且拉了我的strin .. hair.意外地在那里添加了一个冒号. (2认同)

Xua*_*uan 32

webapp2 有json模块方便的包装:如果可用它将使用simplejson,或者如果可以用Python> = 2.6 json模块,并作为最后的资源在App Engine上django.utils.simplejson模块.

http://webapp2.readthedocs.io/en/latest/api/webapp2_extras/json.html

from webapp2_extras import json

self.response.content_type = 'application/json'
obj = {
    'success': 'some var', 
    'payload': 'some var',
  } 
self.response.write(json.encode(obj))
Run Code Online (Sandbox Code Playgroud)


big*_*ind 12

python本身有一个json模块,它将确保您的JSON格式正确,手写JSON更容易出错.

import json
self.response.headers['Content-Type'] = 'application/json'   
json.dump({"success":somevar,"payload":someothervar},self.response.out)
Run Code Online (Sandbox Code Playgroud)

  • 它确实有效.self.response.out是一个流,dump()将流作为其第二个参数.(也许你对dump()和dumps()之间的区别感到困惑?) (12认同)