【问题标题】:Flask & Python creating a JSON objectFlask 和 Python 创建 JSON 对象
【发布时间】:2018-11-11 20:26:55
【问题描述】:

我正在努力熟悉 Python,我有丰富的 PHP 背景。我想创建一个返回以下内容的 JSON 对象:

Endpoint: /dashboard
Request params:{ 
                   method:”get”,
                   headers:headers,
                   url:string,
                   data:{
                           userId: string,
                           date: int
                        }
}

Response: (JSON Object)
{
     code: 200/400,
     message: String,
     data: {     
                  totalCal:
                  remainingCal:
               }
}

基本上连接到数据库并在数据匹配时返回 200,如果我遇到任何错误则返回 400。到目前为止,我想出了这个,但如果我能更好地执行此操作,我将不胜感激!

@app.route('/dashboard', methods=['GET'])
def availCalories():
    cur = conn.cursor()
    cur.execute('''SELECT remaining_cal FROM daily_cal WHERE user_id = 1 AND day= curdate();''')# WHERE userID=userID in session???
    row_headers=[x[0] for x in cur.description]  #EXTRACT ROW HEADERS
    rv = cur.fetchall()
    json_data=[]
    for result in rv:
        json_data.append(dict(zip(row_headers,result)))
    return json.dumps(json_data)

我现在只自学了 3 个月的 Python,所以很多都是反复试验,但我发现自己遇到了困难!

提前感谢您的宝贵时间!

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为有关改进已经运行的代码的问题属于 Code Review,而不是 Stack Overflow。

标签: json python-3.x flask


【解决方案1】:

你使用的是flask,所以你也可以研究jsonify的方法,方便又常用:

flask.json.jsonify(*args, **kwargs)

此函数包装了 dumps() 以添加一些增强功能,使生活更轻松。它将 JSON 输出转换为具有 application/json mimetype 的 Response 对象。为方便起见,它还将多个参数转换为数组或将多个关键字参数转换为 dict。这意味着 jsonify(1,2,3) 和 jsonify([1,2,3]) 都序列化为 [1,2,3]。

【讨论】:

  • 非常感谢!感谢您的意见。
猜你喜欢
  • 2019-06-02
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 2022-01-22
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多