Return in correct json format - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Return in correct json format (/thread-18287.html) |
Return in correct json format - UtiliseIT - May-12-2019 Hi, Trying to nail my return statement and need to make sure my body message is in correct json format. My attempt so far return { 'statusCode': 200, 'headers': {'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}, 'body': {'message': 'Successfully inserted'} }It's only the body part that I haven't got right. Any assistance is gratefully appreciated Thanks Todd RE: Return in correct json format - DeaD_EyE - May-12-2019 This is a Python dict. The Python dict can converted with json.dumps(your_dict) to a json-string.If you use flask: from flask import jsonify # your code @app.route('/') def root(): message = { 'statusCode': 200, 'headers': {'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}, 'body': {'message': 'Successfully inserted'} } return jsonify(message)The jsonify function sets also the right content type in the headers. Other frameworks have also helpers for this task. RE: Return in correct json format - UtiliseIT - May-13-2019 Thanks @DeaD_EyE for your response. Is there a way to do this without having to import anything apart from import json RE: Return in correct json format - snippsat - May-13-2019 Can do dumps and loads. (May-13-2019, 02:10 AM)UtiliseIT Wrote: Is there a way to do this without having to import anything apart fromYes,but it depend what of you a trying to do. json dumps and loads. >>> import json >>> >>> message {'body': {'message': 'Successfully inserted'}, 'headers': {'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}, 'statusCode': 200} >>> d = json.dumps(message) >>> d ('{"statusCode": 200, "headers": {"Access-Control-Allow-Origin": "*", ' '"Content-Type": "application/json"}, "body": {"message": "Successfully ' 'inserted"}}') >>> j = json.loads(d) >>> j {'body': {'message': 'Successfully inserted'}, 'headers': {'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}, 'statusCode': 200} Most of the time is not needed to make a HTTP message body yourself. As show with Flask jsonify, it will dumps with mimetype='application/json' .Same with Requests if eg try to send POST data. Just send data and the underlying stuff is been take care of,using httpbin can test stuff out. >>> import requests >>> from pprint import pprint >>> >>> data = {'sender': 'Alice', 'receiver':'Bob', 'message':'We did it!'} >>> r = requests.post('http://httpbin.org/post', json=data) >>> pprint(r.json()) {'args': {}, 'data': '{"sender": "Alice", "receiver": "Bob", "message": "We did it!"}', 'files': {}, 'form': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '63', 'Content-Type': 'application/json', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.21.0'}, 'json': {'message': 'We did it!', 'receiver': 'Bob', 'sender': 'Alice'}, 'origin': '46.246.117.13, 46.246.117.13', 'url': 'https://httpbin.org/post'} >>> >>> print(r.text) { "args": {}, "data": "{\"sender\": \"Alice\", \"receiver\": \"Bob\", \"message\": \"We did it!\"}", "files": {}, "form": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "63", "Content-Type": "application/json", "Host": "httpbin.org", "User-Agent": "python-requests/2.21.0" }, "json": { "message": "We did it!", "receiver": "Bob", "sender": "Alice" }, "origin": "46.246.117.13, 46.246.117.13", "url": "https://httpbin.org/post" } |