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
问题找到了,原因不在于json.dumps里,而是在于
这一句,通过print total,发现输出
也就是说想通过这样得到记录总数是行不通的。我把程序改了一下,把total通过赋给a:
运行正常。
object
不能直接放到json
格式里。会报错的。django
里,有提供serialize
把对象序列化的方法。至于
flask
就不知道了..