无法解码 JSON 对象:预期值:第 1 行第 1 列(字符 0)



这个问题有点重复,但我找不到解决方案。当我调用烧瓶应用程序并传递 JSON 数据时,我收到错误:

"Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)</p>"

以下是烧瓶代码:

@app.route('/data_extraction', methods=['POST'])
def check_endpoint2():   
    data= request.json()
    result = data['title']
    out={"result": str(result)}
    return json.dumps(out)
    #return 'JSON Posted'

这就是我从卷曲中称呼它的方式

curl -i -H "Content-Type: application/json" charset=utf-8 -X POST -d '{"title":"Read a book"}' 127.0.0.1:5000/data_extraction

我还想知道如何卷曲 JSON 文件(test_data.json),它会是这样的吗?

curl -i -H "Content-Type: application/json" charset=utf-8 -X POST -d @test_data.json 127.0.0.1:5000/data_extraction

你大部分时间都在那里。问题是-d会覆盖您提供的Content-Type标头。尝试--data而不是-d

并将data = request.json()更改为data = request.json.

短语"charset=utf-8"应该在"内容类型"标头中,如下所示:"内容类型:应用程序/json;charset=utf-8"

我在 Pytest 中遇到了它,通过以下方式解决了它

import json
def test_login():
   payload = {"ecosystem":'abc'}
   accept_json=[('Content-Type', 'application/json;')]
   response = client.post('/data_extraction'), data=json.dumps(payload), headers=accept_json)
   assert response.data == {'foo': 'bar'}
我知道

这是一个有点老的问题,但无论如何,JSON 中的双引号必须用反斜杠转义。因此,请求应如下所示:

curl -X POST http://127.0.0.1:5000/ -H "Content-Type: application/json" -d "{"Name":"Nada","Address":"my_address"}"

因此,您的请求可能如下所示

curl -X POST 127.0.0.1:5000/data_extraction -H "Content-Type: application/json" -d "{"title":"Read a book"}" 

也许您不应该将内容类型设置为应用程序/json,取消它并重试它。我遇到过和你一样的问题,我就这样解决了。

相关内容

最新更新