Heim > Fragen und Antworten > Hauptteil
Ich habe kürzlich die Flaschenprogrammierung in Python studiert und verwende jetzt die EasyUI von jQuery, um eine Webanwendung zu schreiben. Das Problem besteht jetzt darin, dass ich nach der Abfrage der Datenbank Standard-JSON-Daten an das Frontend zurückgeben möchte, das Programm jedoch dazu auffordert :
File "D:\jQueryUI code\Flasktest.py", line 23, in p_statusnow
p_status_json = json.dumps({'total':total,'rows':[{'emp_sn':i.emp_sn,'name':i.name,'password':i.password,'emp_dept_sn':i.emp_dept_sn,'py_code':i.py_code,'wb_code':i.wb_code,'autograph':i.autograph} for i in user]},indent=4)
TypeError: <web.utils.IterBetter instance at 0x00000000033D8948> is not JSON serializable
Der Code lautet wie folgt:
@app.route('/p_statusnow',methods = ['GET','POST'])
def p_statusnow():
a=request.values.get('page')
print a
b=request.values.get('rows')
c=int(b)*(int(a)-1)
#user=db.query('select * from dic_user limit ')
user=db.select ('dic_user',offset=c,limit=b)
total=db.query('select count(*) from dic_user')
p_status_json = json.dumps({'total':total,'rows':[{'emp_sn':i.emp_sn,'name':i.name,'password':i.password,'emp_dept_sn':i.emp_dept_sn,'py_code':i.py_code,'wb_code':i.wb_code,'autograph':i.autograph} for i in user]},indent=4)
#print p_status_json
return p_status_json
仅有的幸福2017-05-18 10:58:12
问题找到了,原因不在于json.dumps里,而是在于
total=db.query('select count(*) from dic_user')
这一句,通过print total,发现输出
<web.utils.IterBetter instance at 0x00000000037D0888>
也就是说想通过这样得到记录总数是行不通的。我把程序改了一下,把total通过赋给a:
total=db.query('select count(*) as num from dic_user')
for i in total:
a=i.num
p_status_json = json.dumps({'total':a,'rows':[{'emp_sn':i.emp_sn,'name':i.name,'password':i.password,'emp_dept_sn':i.emp_dept_sn,'py_code':i.py_code,'wb_code':i.wb_code,'autograph':i.autograph} for i in user]},indent=4)
#print p_status_json
return p_status_json
运行正常。
给我你的怀抱2017-05-18 10:58:12
from flask import jsonify
....
def foo():
return jsonify({'test':1})
给我你的怀抱2017-05-18 10:58:12
object
不能直接放到 json
格式里。会报错的。django
里,有提供 serialize
把对象序列化的方法。
至于 flask
就不知道了..