烧瓶读取json文件

时间:2019-04-27 18:54:01

标签: python flask

我是新来的烧瓶。我有一个 parsed.json 文件。我想使用get方法从url获取parsed.json文件数据。我在stackoverflow上尝试了解决方法,但是我的问题没有解决。希望得到解决方法

这是parsed.json文件中的json数据

{
    "OfficeServicesID": "1",
    "OfficeID": "1",
    "Service": "eVoting Booth",
    "officeID": "1.0",
    "Office": "Elton Mckenzie",
    "Suburb": "Hurstville",
    "Phone Number": "+61 2 3556 3485",
    "Email": "hurstville@myoffice.gov.au",
    "Lat": "-33.975869",
    "Lon": "151.08893899999998"
},
{
    "OfficeServicesID": "2",
    "OfficeID": "1",
    "Service": "Justice of the Peace",
    "officeID": "2.0",
    "Office": "Kennith Graves",
    "Suburb": "Sydney",
    "Phone Number": "+61 2 3753 2374",
    "Email": "sydney@myoffice.gov.au",
    "Lat": "-33.867139",
    "Lon": "151.207114"
},
{
    "OfficeServicesID": "3",
    "OfficeID": "2",
    "Service": "Library",
    "officeID": "3.0",
    "Office": "Myrna Duke",
    "Suburb": "Auburn",
    "Phone Number": "+61 7 3375 3892",
    "Email": "auburn@myoffice.gov.au",
    "Lat": "-33.849321999999994",
    "Lon": "151.033421"
},

我的代码

table = []
with open('parsed.json', 'r') as f:
    for line in f:
        table.append(json.loads(line))


tasks = table



app = Flask(__name__)

@app.route('/getservices/', methods=['GET'])
def getservices():
    return jsonify(tasks)

if __name__ == '__main__':
    app.run(debug=True)

当转到URL http://127.0.0.1:5000/getservices/时 我想要这样的结果

[


    {
    "OfficeServicesID": "1",
    "OfficeID": "1",
    "Service": "eVoting Booth",
    "officeID": "1.0",
    "Office": "Elton Mckenzie",
    "Suburb": "Hurstville",
    "Phone Number": "+61 2 3556 3485",
    "Email": "hurstville@myoffice.gov.au",
    "Lat": "-33.975869",
    "Lon": "151.08893899999998"
    },
    {
    "OfficeServicesID": "2",
    "OfficeID": "1",
    "Service": "Justice of the Peace",
    "officeID": "2.0",
    "Office": "Kennith Graves",
    "Suburb": "Sydney",
    "Phone Number": "+61 2 3753 2374",
    "Email": "sydney@myoffice.gov.au",
    "Lat": "-33.867139",
    "Lon": "151.207114"
    }
]

2 个答案:

答案 0 :(得分:0)

您可以将“解析的json”包裹在方括号“ [...]”中

import json

table = []

with open('parsed.json', 'r') as f:
    content = f.read()

# remove trailing comma:
content = content.rstrip(",")

# wrap with brackets:
content = "[" + content + "]"

# pase the json list
table = json.loads(content)

简单高效……

答案 1 :(得分:0)

您尝试读取的JSON实际上无效。它显示对象列表,但不包含在方括号[]中。正如Laurent所建议的那样,请尝试先用方括号[{...}, {...}, {...}]修复JSON,然后再对其进行解析。

要解析,请摆脱for并将表直接分配给json.loads,如下所示:

with open('parsed.json', 'r') as f:
    table = json.loads(f.read())

同样,不要忘了先修复您的JSON。