Heim  >  Fragen und Antworten  >  Hauptteil

Wie erhalte ich vollständige JSON-Daten mit jsom.dumps?

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
天蓬老师天蓬老师2712 Tage vor678

Antworte allen(3)Ich werde antworten

  • 仅有的幸福

    仅有的幸福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

    运行正常。

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:58:12

    from flask import jsonify
    ....
    
    
    def foo():
        return jsonify({'test':1})

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:58:12

    object 不能直接放到 json 格式里。会报错的。
    django 里,有提供 serialize 把对象序列化的方法。
    至于 flask 就不知道了..

    Antwort
    0
  • StornierenAntwort