Python3 Gerrit 请求获得响应 Json 以 )]} 开头
Python3 Gerrit Requests Get Reponse Json starts with )]}
我正在对 gerrit 服务器进行 REST 调用。非常直截了当我不明白响应查看来自 Chrome 的网络流量,Chrome 得到相同的响应。所以我猜我根本不明白如何解析响应。这是我的代码和一些响应:
import requests
from requests.auth import HTTPBasicAuth
url = 'https://my.gerrit.server.com/changes/?n=1&q=owner=me'
headers = { 'Content-Type': 'application/json', 'charset' : 'UTF-8'}
response = requests.get(url, verify=False, auth=HTTPBasicAuth('usernmae', 'password'), headers=headers)
如果我们打印 response.text,我们会得到:
')]}\'\n[\n {\n "id": "some_id, ... ,\n "requirements": []\n }\n]\n'
除了开头 )]}.
,其他看起来都有效 JSON
我该如何解析?
在将此值传递给 JSON 解析器之前,您必须去除前缀字符。
s[4:] if s.startswith(')]}\'') else s
>>> s = ')]}\'\n[\n {\n "id": "some_id",\n "requirements": []\n }\n]\n'
>>> json.loads(s[4:] if s.startswith(')]}\'') else s)
[{'id': 'some_id', 'requirements': []}]
来自 https://gerrit-review.googlesource.com/Documentation/rest-api.html#output
的 Gerrit 文档
To prevent against Cross Site Script Inclusion (XSSI) attacks, the JSON response body starts with a magic prefix line that must be stripped before feeding the rest of the response body to a JSON parser:
)]}'
[ ... valid JSON ... ]
我正在对 gerrit 服务器进行 REST 调用。非常直截了当我不明白响应查看来自 Chrome 的网络流量,Chrome 得到相同的响应。所以我猜我根本不明白如何解析响应。这是我的代码和一些响应:
import requests
from requests.auth import HTTPBasicAuth
url = 'https://my.gerrit.server.com/changes/?n=1&q=owner=me'
headers = { 'Content-Type': 'application/json', 'charset' : 'UTF-8'}
response = requests.get(url, verify=False, auth=HTTPBasicAuth('usernmae', 'password'), headers=headers)
如果我们打印 response.text,我们会得到:
')]}\'\n[\n {\n "id": "some_id, ... ,\n "requirements": []\n }\n]\n'
除了开头 )]}.
,其他看起来都有效 JSON我该如何解析?
在将此值传递给 JSON 解析器之前,您必须去除前缀字符。
s[4:] if s.startswith(')]}\'') else s
>>> s = ')]}\'\n[\n {\n "id": "some_id",\n "requirements": []\n }\n]\n'
>>> json.loads(s[4:] if s.startswith(')]}\'') else s)
[{'id': 'some_id', 'requirements': []}]
来自 https://gerrit-review.googlesource.com/Documentation/rest-api.html#output
的 Gerrit 文档To prevent against Cross Site Script Inclusion (XSSI) attacks, the JSON response body starts with a magic prefix line that must be stripped before feeding the rest of the response body to a JSON parser:
)]}' [ ... valid JSON ... ]