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

2024-09-28 20:42:13 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:::

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)

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

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

enter image description here

更新 但我得到的是: enter image description here


Tags: csvimportjsonbottleresponserequestetltemplate
2条回答

所以有两件事,你应该用json.dumps文件作为你的输出。为了安全起见,瓶子总是会从输出口逸出。要绕过这个问题,您应该加载一个调用变量的模板。然后在模板内部,按如下方式访问变量: {{!变量名}}

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

像这样将表转换为JSON,它要求您使用json模块。这是通过在petl模块源代码中查找创建的。在

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

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

相关问题 更多 >