我正在尝试将此JSON推送到数据请求中,但我认为该格式未正确传递。我一直收到一个不好的要求。当我将其放入REST客户端时,我知道此请求有效。 我是否无法为发布请求正确格式化JSON?
import json
import requests
import pprint
json_obj1 = """
'dateStart': '2019-11-25T00:00:00.000Z',
'dateEnd': '2019-11-26T23:59:59.999Z',
'subscriptions':
{
'category': {
'name': 'Accessories',
'childrenUuids': [],
'uuid': 'c35cb71f-5dcd-4ae3-86b3-d642208ad7f5'
},
'geography': {
'uuid': 'ad63a8ff-f636-44e1-9fe0-1d1664dfd530',
'name': 'New York',
'geoType': 'METRO',
'childrenUuids': []
}
}
"""
s = requests.session()
s.headers = {'Content-Type': 'application/json'}
infra_link = <someURL>
infra_content = s.request(
method='POST', url=infra_link, data=json_obj1, headers=s.headers,
).text
结果:
{“ timestamp”:“ 2019-11-27T16:22:49.885 + 0000”,“ status”:400,“ error”:“ Bad' 'Request“,” exception“:” org.springframework.http.converter.HttpMessageNotReadableException“,” message“:”不良' 'Request“,” path“:” / index“}')
答案 0 :(得分:0)
尝试更改此内容
infra_content = s.request(
method='POST', url=infra_link, data=json_string1, headers=s.headers,
).text
对此
infra_content = s.request(
method='POST', url=infra_link, data=json.dumps(json_string1), headers=s.headers,
).text
在请求数据参数中添加了json.dump()。
答案 1 :(得分:0)
您没有传递json字符串作为data
参数,而是传递了dict
。
尝试以下操作:
infra_content = s.request(
method='POST', url=infra_link, data=json.dumps(json_string1), headers=s.headers,
).text
您的变量json_string1
命名错误,可能会使您感到困惑。如您所见,它不是字符串,而是字典(并且json是特定的字符串格式,但是仍然是字符串格式)。 json.dumps
(代表 dump 表示 s tring )用于将字典序列化为json字符串。