使用Python发布json:不可序列化错误?
尝试使用请求将json发布到指定的URL:使用Python发布json:不可序列化错误?,python,json,python-requests,Python,Json,Python Requests,尝试使用请求将json发布到指定的URL: import requests, glob, unicodedata, ntpath, time, json url = 'https://myWebsite.com/ext/ext/ext' json_file = open("/Users/ME/Documents/folder/folder/test.json") headers = {'Content-type': 'application/json', 'Accept': 'text/p
import requests, glob, unicodedata, ntpath, time, json
url = 'https://myWebsite.com/ext/ext/ext'
json_file = open("/Users/ME/Documents/folder/folder/test.json")
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post(url, data=json.dumps(json_file), headers=headers)
但是,这给了我以下错误:
TypeError: <open file '/Users/ME/Documents/folder/folder/test.json', mode 'r' at 0x1021c9660> is not JSON serializable
TypeError:不可序列化JSON
是什么导致了这个错误?我知道我的json文件是有效的json,所以我认为这不是问题所在 如果文件中已有有效的JSON文本,则不需要生成JSON。只需发送文件内容:
r = requests.post(url, data=json_file, headers=headers)
这将把打开文件的文件内容作为帖子正文发送,有效地流式传输数据
json.dumps()
仅当您有需要表示为json字符串的Python对象(如字符串、数字、布尔值、字典、列表等)时才需要。如果文件中已经有有效的json文本,则无需生成json。只需发送文件内容:
r = requests.post(url, data=json_file, headers=headers)
这将把打开文件的文件内容作为帖子正文发送,有效地流式传输数据
json.dumps()
仅当需要将Python对象(如字符串、数字、布尔值、字典、列表等)表示为json字符串时才需要。open
不返回文件内容,而是返回文件对象。尝试对open
的返回值调用read()
,以获取实际内容
查看您自己的错误:
TypeError: <open file '/Users/ME/Documents/folder/folder/test.json', mode 'r' at 0x1021c9660> is not JSON serializable
open
不返回文件内容,而是返回文件对象。尝试对open
的返回值调用read()
,以获取实际内容
查看您自己的错误:
TypeError: <open file '/Users/ME/Documents/folder/folder/test.json', mode 'r' at 0x1021c9660> is not JSON serializable
在这种情况下,根本不需要调用
.read()
data
获取一个文件对象,它将作为一个高效上传流式传输。是的,但json.dumps不希望文件作为参数。这就是为什么我想用.read()表示json。之后,我建议使用json重新验证NOPE,但这只是误解了json.dumps()
的用途。是的,但这是另一个错误。我建议的解决方案是因为我认为他想重新验证文件中的json内容。OP写道:我知道我的json文件是有效的json,所以我认为这不是问题所在。在这种情况下,你根本不需要调用.read()
data
获取一个文件对象,它将作为一个高效上传流式传输。是的,但json.dumps不希望文件作为参数。这就是为什么我想用.read()表示json。之后,我建议使用json重新验证NOPE,但这只是误解了json.dumps()
的用途。是的,但这是另一个错误。我建议的解决方案是因为我认为他想重新验证文件中的json内容。OP写道:我知道我的json文件是有效的json,所以我认为这不是问题。这听起来对我很有用。这听起来对我很有用。