Ich bin ziemlich neu zu Python, von js kommen.Wie kann ich Python-Objekte so strukturieren, dass sie gut JSonify sind?
Ich versuche, zwischen Client und Server mithilfe von Json zu kommunizieren, und ich habe Probleme zu verstehen, was das leicht zu entwerfende Gegenstück zu einem Objekt-Attribut in Python (Tornado) ist. Der folgende Code für die Objekterstellung aus dieser SO-Antwort (https://stackoverflow.com/a/2827726/4808079) wirft einige Fehler auf.
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))
Console Fehler:
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
Das entspricht dem, was ich versuche oben würde wie so sein, in 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);
Wie soll ich ein strukturieren Objekt in Python, so dass es JONonifies gut?
Check out simplejson - https://simplejson.readthedocs.io/en/latest/ – MikeJ
Nun, Ihre Zurückverfolgungs ** nicht ** komplett . Was ist die Ausnahme? – freakish
Wo wurde 'type ('',(), {})' verwendet? Das ist eine sehr merkwürdige Idee. –