字节输入在Python中是不正确的(无法转换为JSON)

时间:2019-10-21 20:45:28

标签: python json django

基本上,我有这个API端点,如果您向它发出POST请求,就会被调用。问题是由于某种原因,我无法将字节转换为JSON,以便可以访问数据。

我的代码:

apiVersion: v1
data:
  my.cfg: |
    [core]
    # Some comments
    my_folder = /usr/local/my_folder

    # The folder where my app should store its log files
    # This path must be absolute
    base_log_folder = /usr/local/app/logs

    # Logging options
    remote_logging = False
    remote_log_conn_id =
    remote_base_log_folder =
    encrypt_logs = False
kind: ConfigMap
metadata:
  name: test-config

我尝试使用邮递员向我的路径@api_view(['POST']) def create_user(request): """ POST = Create user. """ # Check that a username with this email doesn't already exist try: data = {} print("IS IT WORKING...?") print(type(request.body)) print(request.body) # Use double quotes to make it valid JSON my_json = request.body.decode('utf8').replace("'", '"') print("MY_JSON:") print(my_json) data = json.loads(my_json) print("DATA:") print(data) s = json.dumps(data, indent=4, sort_keys=True) print("s:") print(s) except User.DoesNotExist: print("PLS WORK ON CONSOLE") return Response(status=status.HTTP_409_CONFLICT) 发出POST请求,但是当我打印users/create/以查看POST请求的内容时,该请求的格式设置错误,并且随机数很多,破折号。这使我无法将其转换为JSON。这是带有request.bodyemail字段的简单POST请求。

这是奇怪的格式:https://gyazo.com/fa1cc2f04637c02f79fe59790153ae40

这是我解码并用双引号将“ json”转换后的样子(请注意奇怪的破折号和数字):https://gyazo.com/3ca41106117a4e9acdd96929469313a1

此后,由于password导致错误,因为输入的格式不正确。

错误消息:

data = json.loads(my_json)

我已经使用这些SO帖子(12)将我带到现在的位置(意识到我的输入是错误的!)。

1 个答案:

答案 0 :(得分:0)

编辑:好的,所以我找到了解决方案。在Postman中,您可以将数据发送为form-data,也可以发送为raw。我当时使用form-data,但我猜只是破坏了一切,创造了所有奇怪的-----和整数。我切换到raw,然后直接输入JSON格式和我的代码!所有的!但是我完全不明白为什么。我只是有一种直觉,就是我发送数据的方法根本不正确。有人可以解释吗?