微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试解码JSON时出错:simplejson.errors.JSONDecodeError:预期值:第1行第1列字符0

如何解决尝试解码JSON时出错:simplejson.errors.JSONDecodeError:预期值:第1行第1列字符0

我在尝试解码json时收到此错误

simplejson.errors.JSONDecodeError:期望值:第1行第1列(字符0)

任何帮助将不胜感激。

views.py:

from django.shortcuts import render
import requests

def home(request):
    response = requests.get('https://dev-api.prime.com/api/v1/hub/login')
    data = response.json()
    return render (request,'home.html',{
        'email': data['email'],'password': data['password']
    })

urls.py:

 path ('home/',views.home,name="home"),

home.html

{% extends 'main.html' %}

{% block content %}
  <h2>API</h2>
  <p>Your email is <strong>{{ email }}</strong>,and password <strong>{{ password }}</strong></p>
{% endblock %}

我试图从终端发送POST请求:

http POST https://dev-api.prime.com/api/v1/hub/login email="sssdprime@gmail.com" password="asssdps"

并获得我一直在寻找的答复:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 866
Content-Type: application/json; charset=UTF-8
Date: Wed,28 Oct 2020 07:09:45 GMT
Server: Nginx/1.12.2
Set-Cookie: _language=811f45dc7836f8b3da4c5d04b177501191c20a3f77a46812f864a3bca7d5d3e1a%3A2%3A%7Bi%3A0%3Bs%3A9%3A%22_language%22%3Bi%3A1%3Bs%3A2%3A%22en%22%3B%7D; path=/; HttpOnly
Set-Cookie: _csrf=5f3fb0e6b529660e0a11a97a3fd3e9a85aa3794d20; path=/; HttpOnly
vary: Accept
X-Debug-Duration: 816
X-Debug-Link: /debug/default/view?tag=5f991938b8410
X-Debug-Tag: 5f991938b8410
X-Frame-Option: SAMEORIGIN
X-Powered-By: PHP/7.2.18
X-UA-Compatible: IE=Edge,chrome=1
X-XSS-Protection: 1

{
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2MDM4Njg5ODUsImlzcyI6Imh0dHA6XC9cL2Rldi1hcGkuZGVudGFwcmltZS5jb206ODA5NCIsImF1ZCI6Imh0dHA6XC9cL2Rldi1hcGkuZGVudGFwcmltZS5jb206ODA58","complete": false,"country": "AL","date_of_birth": null,"email": "sssdprime@gmail.com","first_name": "somename","id": 201,"last_name": "somename","phone": "08865444567","role": 10,"sf_token": "0014H00002dd","type_language": "en","username": ""
    },"status": 200,"success": true
}

解决方法

这是您的请求

http POST https://dev-api.prime.com/api/v1/hub/login email="sssdprime@gmail.com" password="asssdps"

在代码中

response = requests.get('https://dev-api.prime.com/api/v1/hub/login')

它们是不同的。在第一个请求中,您使用了“ POST”方法,并附带了电子邮件和密码。 在代码中,您只需要“ GET”方法即可。

将请求代码更改为类似的内容,它应该会收到正确的响应。

response = requests.post('https://dev-api.prime.com/api/v1/hub/login',json={"email":"sssdprime@gmail.com","password":"asssdps"})

并且由于您想要的响应是这样的

{
    "data": {
        ...
    },"status": 200,"success": true
}

响应将返回字典。而您只需要数据。您需要访问“数据”键中的值。所以改变这个,

data = response.json()

进入

data = response.json()['data']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。