Flask API failing to decode JSON data. Error: "message": "Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)"

10,409

Solution 1

You need to select raw -> JSON (application/json) in Postman like this:

enter image description here

When it comes to your cURL request, answer explains that windows's command line lacks support of strings with single quotes, so use:

curl -i -H "Content-Type: application/json" -X POST -d "{\"username\":\"abc\", \"password\":\"abc\"}" 127.0.0.1:5000

instead:

curl -H "Content-Type: application/json" -X POST -d '{'username':"abc",'password':"abc"}' http://localhost:5000

\ escapes " character.

Solution 2

You also need to have the Content-Length header enabled.

Without header

With header

Share:
10,409
FProlog
Author by

FProlog

Updated on June 14, 2022

Comments

  • FProlog
    FProlog almost 2 years

    I'm setting up a simple rest api using flask and flask-restful. Right now all I'm trying to do is create a post request with some Json data, and then return it just to see if it works. I always get the same error "message": "Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)"

    Below is my code

    from flask import Flask, jsonify, request
    from flask_restful import Resource, Api
    
    app = Flask(__name__)
    api = Api(app)
    
    
    class Tester(Resource):
       def get(self):
           return {'about': 'Hello World'}
    
       def post(self):
           data_json = request.get_json(force=True)
           return {'you sent': data_json}
    
    
    api.add_resource(Tester, '/')
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    The curl request I am making to test this is below, I've also tried making request using postman

    curl -H "Content-Type: application/json" -X POST -d '{'username':"abc",'password':"abc"}' http://localhost:5000
    
  • DhoTjai
    DhoTjai about 5 years
    Single quote in your payload --> '{'.