数据字段未正确加载请求的字典

时间:2019-11-27 16:25:08

标签: python json python-requests

我正在尝试将此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“}')

2 个答案:

答案 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字符串。