【问题标题】:Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)</p>无法解码 JSON 对象:预期值:第 1 行第 1 列 (char 0)</p>
【发布时间】:2019-02-01 04:00:21
【问题描述】:

这个问题有点重复,但我找不到解决方案。 当我调用烧瓶应用程序并传递 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 中调用它的方式

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

我也想知道怎么curl这个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

【问题讨论】:

    标签: json python-3.x curl flask


    【解决方案1】:

    短语“charset=utf-8”应位于“Content-Type”标头中,如下所示: "Content-Type: application/json; charset=utf-8"

    【讨论】:

    • 它这样做了: curl -i -H "Content-Type: application/json; charset=utf-8" -X POST --data '{"title":"Read a book"} ' 127.0.0.1:5000/data_extraction
    【解决方案2】:

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

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

    【讨论】:

    • 它这样做了: curl -i -H "Content-Type: application/json; charset=utf-8" -X POST --data '{"title":"Read a book"} ' 127.0.0.1:5000/data_extraction
    【解决方案3】:

    我在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 字符串并传递 headers 参数对我有用。
    【解决方案4】:

    也许你不应该将 Content-Type 设置为 application/json,取消它并重试它。 我也遇到了和你一样的问题,我是这样解决的。

    【讨论】:

      【解决方案5】:

      我知道这个问题有点老了,但无论如何,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\"}" 
      

      【讨论】:

        猜你喜欢
        • 2021-03-25
        • 2019-08-21
        • 1970-01-01
        • 2019-08-09
        • 2020-02-28
        • 2019-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多