如何在python中返回json块

如何在python中返回json块,python,json,flask,Python,Json,Flask,我正在尝试编写一个快速api,它将搜索json对象并返回当前帐户(如果iban相同)。如果找不到任何iban,则应返回404 这就是我到目前为止所做的: from flask import Flask from flask import request from flask import abort import json app = Flask(__name__) accounts = { "accounts": { "account": {

我正在尝试编写一个快速api,它将搜索json对象并返回当前帐户(如果iban相同)。如果找不到任何iban,则应返回404

这就是我到目前为止所做的:

from flask import Flask
from flask import request
from flask import abort
import json

app = Flask(__name__)

accounts = {
    "accounts": {
        "account": {
            "naam": "Mark Roording",
            "iban": "NL93RABO4923460458",
            "straat": "Pluviusstraat",
            "straatnummer": 5,
            "postcode": "7321EL",
            "plaats": "Apeldoorn"
        },
        "account": {
            "naam": "Carleen van der Snoek",
            "iban": "NL80INGB7619798757",
            "straat": "Franciscanenstraat",
            "straatnummer": 160,
            "postcode": "1566LC",
            "plaats": "Assendelft"
        },
        "account": {
            "naam": "Maria Lingen",
            "iban": "NL28INGB6291533782",
            "straat": "Weterschoten",
            "straatnummer": 135,
            "postcode": "7381AL",
            "plaats": "Klarenbeek"
        },
        "account": {
            "naam": "Betty Kelder",
            "iban": "NL70INGB6143537119",
            "straat": "Utrechtseweg",
            "straatnummer": 111,
            "postcode": "6862AC",
            "plaats": "Oosterbeek"
        },
        "account": {
            "naam": "Timmie Ruijgrok",
            "iban": "NL41ABNA9079565997",
            "straat": "Kuipersstraat",
            "straatnummer": 27,
            "postcode": "1074EK",
            "plaats": "Amsterdam"
        }
    }

}


@app.route('/get_accountdetails')
def get_accountdetails():
    paramiban = request.args.get('iban', type=str)

    for k, acctinfo in accounts['accounts'].items():
        if acctinfo['iban'] == paramiban:
            response = app.response_class(
                response=json.dumps(acctinfo),
                status=200,
                mimetype='application/json'
            )

            return response
        else:
            return abort(404)

因此,如果iban是NL28INGB6291533782,它将返回活期账户和200,如下所示:

{"naam": "Maria Lingen", "iban": "NL28INGB6291533782", "straat": "Weterschoten", "straatnummer": 135, "postcode": "7381AL", "plaats": "Klarenbeek"}
编辑:所以我更改了代码,如果我输入最后一个iban,它会工作并返回值。如果是其他的伊班人,那就不行了

from flask import json

@app.route('/get_accountdetails')
def get_accountdetails():
    iban = request.args.get('iban')

    for dict in accounts:
        if dict['iban'] == iban:
            response = app.response_class(
                 response=json.dumps(dict['account']),
                 status=200,
                 mimetype='application/json'
               )
            return response
        else:
            return abort(404)

它将有助于发送带有200个状态代码的json响应

您处理帐户,而您应该处理帐户[“帐户”]:

印刷品:

    {
  "naam": "Timmie Ruijgrok",
  "iban": "NL41ABNA9079565997",
  "straat": "Kuipersstraat",
  "straatnummer": 27,
  "postcode": "1074EK",
  "plaats": "Amsterdam"
}

JSON中有重复的密钥。虽然在标准中没有实际禁止,但它没有任何意义。当解析为Python时,只剩下一个键。我建议使用一个列表/一个数组,而不是带有重复键的字典/对象。好吧,我现在将它们设置为唯一的,但我不知道如何在代码中返回account2。似乎您在这里提供了真实的,可能是敏感的数据:真实地址和银行帐户,请。别担心,这些都是生成的。这是虚拟数据数据看起来合法得令人怀疑。。。介意在您使用BSN时共享BSN吗?谢谢您的回复,但是如果我使用“”,我会得到以下错误:“TypeError:字符串索引必须是整数”检查您的字典,此错误是从字典中产生的,如果我用勺子喂它iban,我想使用它。您应该看看“flask_restplus”。如果你想设置一个REST接口,我想你会喜欢它的
    {
  "naam": "Timmie Ruijgrok",
  "iban": "NL41ABNA9079565997",
  "straat": "Kuipersstraat",
  "straatnummer": 27,
  "postcode": "1074EK",
  "plaats": "Amsterdam"
}