javascript - 如何构造 python 对象以便它们能够很好地 JSONify?

标签 javascript python json translate

我对 python 相当陌生,来自 js。

我正在尝试使用 json 在客户端和服务器之间进行通信,但我无法理解 python (tornado) 中与对象属性等效的简单 jsonifyable 是什么。下面的对象创建代码取自此 SO 答案( https://stackoverflow.com/a/2827726/4808079 ),会引发一些错误。

class MainHandler(tornado.web.RequestHandler):
    def post(self):
        #getting and parsing json works as expected
        args = json.loads(self.request.body.decode())

        #can't seem to figure out how to make this jsonify well
        out = []
        for num in range(0,5):
            addMe = type('', (), {})
            addMe.value = num
            addMe.square = num * num
            out.append(addMe)

        self.write(json.dumps(out))

控制台错误:

Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/tornado/web.py", line 1509, in _execute
    result = method(*self.path_args, **self.path_kwargs)
File "test_tornado.py", line 43, in post
    self.write(json.dumps(out))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps
    return _default_encoder.encode(obj)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <class '__main__.'> is not JSON serializable

与我上面尝试的等效内容在 JavaScript 中是这样的:

var out = []
for(var num = 0; num < 5; num++) {
    var addMe = {};
    addMe.value = num;
    addMe.square = num*num;
    out.push(addMe);
}
return JSON.stringify(out);

我应该如何在 Python 中构造一个对象,以便它能够很好地 JSON 化?

最佳答案

您可以开箱即用地对字典进行编码:

addMe = {
    'value': num,
    'square': num * num
}

关于javascript - 如何构造 python 对象以便它们能够很好地 JSONify?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44914168/

相关文章:

javascript - angularJS 仅在 javascript 对象中存在时才添加 ng-href

python - src/greenlet/greenlet.h :42:5: error: unknown type name ‘CFrame’

php - 在 PHP 中从 SQL 结果构造一个复杂的 JSON 对象

json - Golang json 解码 "unexpected end of JSON input"

java - Paypal 自动充值

javascript - 使用 ArcGIS JS API 在浏览器中显示 ArcGIS 形状文件 (*.shp)

javascript - 对于在怪异模式父级中运行的标准模式 iframe,document.querySelector 未定义

python - 从 S3 存储桶下载 300 万个对象的最快方法

python - 根据字符串拆分文件

iphone - 如何从 iphone 中的 json 数组中获取对象?