Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何构造python对象,使它们能够很好地JSONify化?_Javascript_Python_Json_Translate - Fatal编程技术网

Javascript 如何构造python对象,使它们能够很好地JSONify化?

Javascript 如何构造python对象,使它们能够很好地JSONify化?,javascript,python,json,translate,Javascript,Python,Json,Translate,我是python的新手,来自js 我试图使用json在客户机和服务器之间进行通信,但我很难理解python(tornado)中对象属性的简单jsonifyable等价物是什么。下面的对象创建代码取自这个SO answer()抛出一些错误 class MainHandler(tornado.web.RequestHandler): def post(self): #getting and parsing json works as expected args

我是python的新手,来自js

我试图使用json在客户机和服务器之间进行通信,但我很难理解python(tornado)中对象属性的简单jsonifyable等价物是什么。下面的对象创建代码取自这个SO answer()抛出一些错误

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
回溯(最近一次呼叫最后一次):
文件“/Library/Python/2.7/site packages/tornado/web.py”,第1509行,在
结果=方法(*self.path_参数,**self.path_参数)
文件“test_tornado.py”,第43行,在post中
self.write(json.dumps(out))
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/_init__.py”,第243行,转储中
返回默认编码器编码(obj)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py”,第207行,在encode中
chunks=self.iterencode(o,\u one\u shot=True)
iterencode中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py”,第270行
返回_iterencode(o,0)
默认情况下,文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py”第184行
raise TypeError(repr(o)+“不可JSON序列化”)
TypeError:不可序列化JSON
在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);
var out=[]
for(var num=0;num<5;num++){
var addMe={};
addMe.value=num;
addMe.square=num*num;
向外推(加法);
}
返回JSON.stringify(out);

我应该如何在Python中构造一个对象,使其能够很好地JSONIfication?您可以对DICT进行开箱即用的编码:

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

您可以对DICT进行开箱编码:

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

检查SimpleJson-嗯,您的回溯还不完整。例外情况是什么?您在哪里看到使用了
type(“”,(),{})
?“这是一个非常奇怪的想法。”怪胎补充道。我在它输入json的地方停了下来。py@AlexHall我发现的地方在上面的问题中有链接。不过,我想我已经找到了下面的解决方案。请查看SimpleJson-嗯,您的回溯还不完整。例外情况是什么?您在哪里看到使用了
type(“”,(),{})
?“这是一个非常奇怪的想法。”怪胎补充道。我在它输入json的地方停了下来。py@AlexHall我发现的地方在上面的问题中有链接。我想我已经找到了下面的解决方案。它们被称为dicts,而不是objects。谢谢你啊。它们被称为dicts,而不是objects。非常感谢。