Python 如何将输出转换为json格式?

Python 如何将输出转换为json格式?,python,json,bottle,Python,Json,Bottle,代码::: 这是一个文件,我想在json中得到结果,但我不知道该怎么做,因为我对petl和瓶子框架非常陌生 当用户在浏览器上输入url时,例如“localhost:8080/loc?postcode=4700”,它将返回与该邮政编码相关的数据,但为csv格式,但我希望获得json格式的输出,以便我可以使用该数据在地图上查找地址 有人能帮我得到结果吗 示例:运行localhost by bottle framework后,我希望在浏览器上的输出为: 已更新 但我得到的是: 像这样将表转换为JSO

代码:::

这是一个文件,我想在json中得到结果,但我不知道该怎么做,因为我对petl和瓶子框架非常陌生 当用户在浏览器上输入url时,例如“localhost:8080/loc?postcode=4700”,它将返回与该邮政编码相关的数据,但为csv格式,但我希望获得json格式的输出,以便我可以使用该数据在地图上查找地址 有人能帮我得到结果吗

示例:运行localhost by bottle framework后,我希望在浏览器上的输出为:

已更新 但我得到的是:

像这样将表转换为JSON,需要使用
JSON
模块。这是通过查看
petl
模块源代码创建的

from bottle import route, request, response, template,run
import petl as etl
@route('/loc')
def abc():
    response.headers['Access-Control-Allow-Origin']='*'
    response.headers['Content-type']='application/json'
    post = request.query.postcode
    locationTable = etl.fromcsv('clinic_locations.csv')
    abcd = etl.search(locationTable, 'Postcode', post)
    return template('{{postcode}}',postcode=abcd)

如果您最终使用此答案,请确保您的数据库已过滤掉所有
标记,否则恶意用户可能会将JavaScript插入您的数据库,并使您的API端点运行任意JavaScript,否则称为XSS攻击。

因此,有两件事,您应该使用json.dumps作为输出。瓶子总是会漏出输出,以确保安全。要绕过这一点,您应该加载一个调用变量的模板。然后在模板内部,访问变量,如下所示: {{!变量名}


!!如果数据与用户输入相关,这是非常危险的,因为它们可以很容易地将可运行代码插入到页面中。小心使用

你现在可以分享你的输出吗?只是想让你知道,缩进在Python中很重要。是的,我知道我想用json获得输出,你能帮我吗me@NitikeshDubey什么是etl模块?请给出答案。更新问题!!非常感谢,但浏览器显示的是----[{“ID”:“25”,“姓名”:“Booie诊所”,“郊区”:“Booie”,“州”:“QLD”,“邮编”:“4610”,“电子邮件”:“mailto:booie@myclinic.com.au“,”Lat:“-26.498426”,“Lon:“151.935421”}]@NitikeshDubey您将需要返回abcd而不是模板。模板函数将退出返回。我将编辑我的答案以解决此问题。为什么“显示这些(“”)的isnteadquotation@NitikeshDubey
在HTML中。瓶是正确地逃脱这一点,以防止XSS发生在JSON中。确保您的数据库已过滤掉所有
标记,否则恶意用户可能会将javascript插入数据库,并使api端点运行任意js。如果答案有帮助,请单击答案旁边的“检查”。您对XSS的看法是正确的。我在代码中没有考虑到这一点。在MustacheMoses上键入过滤器
from bottle import route, request, response, template,run
import petl as etl
import json
@route('/loc')
def abc():
    response.headers['Access-Control-Allow-Origin']='*'
    response.headers['Content-type']='application/json'
    post = request.query.postcode
    locationTable = etl.fromcsv('clinic_locations.csv')
    abcd = etl.search(locationTable, 'Postcode', post)
    abcd = json.JSONEncoder().encode(list(etl.dicts(abcd))) #Here's where the magic happens.
    return abcd