将字节对象转换为Python字典或JSON对象。

7

我是新手Python开发者。 我有一个PHP索引数组。使用get请求获取数据。

数据:

b'Array\n(\n    [0] => HTTP/1.1 301 Moved Permanently\n    [1] => Location: http://www.blahblah.com/\n    [2] => HTTP/1.1 200 OK\n    [3] => Date: Mon, 29 Oct 2018 09:29:10 GMT\n    [4] => Server: blahblah\n    [5] => Content-Length: 98836\n    [6] => Last-Modified: Mon, 29 Oct 2018 08:13:21 UTC\n    [7] => device_type: Touch\n    [8] => content-language: en\n    [9] => Set-Cookie: JSESSIONID=U-i_J9VsfqNazZl3uF4dAj2-7BmV370w58TXINO5UckAel4uGT5O!-115865558; path=/cs; HttpOnly\n    [10] => Keep-Alive: timeout=300\n    [11] => Connection: Keep-Alive\n    [12] => Content-Type: text/html; charset=UTF-8\n    [13] => Set-Cookie: NSC_q6.kjp.dpn_dmvtufs_WT.2*80=ffffffff0985006c45525d5f4f58455e445a4a422828;expires=Mon, 29-Oct-2018 09:31:10 GMT;path=/;httponly\n)\n\n' 

我想将其转换为JSON对象。

{
"[0]" : "HTTP/1.1 301 Moved Permanently",
"[1]" : "Location: http://www.blahblah.com/",
"[2]" : "HTTP/1.1 200 OK"
"[3]" : "Date: Mon, 29 Oct 2018 09:29:10 GMT",
......,
.....,

我尝试过加载JSON的代码:

import requests
import json
u1="http://blahblah.com"
req=requests.get("http://gen.demotest.com/httpsProxy/httpsgetheaders.php?url=%s"%(u1))
data=req.content
print(json.dumps(data))

但是遇到了一些错误:

TypeError: Object of type bytes is not JSON serializable

3
你需要修复发送方式。没有必要包含所有那些Array\n...垃圾信息;PHP应该发布已编码的表单或JSON数据。(并且还要注意,你想要的输出不是JSON格式,而是PHP;JSON看起来像{"0": "HTTP...", ...}或可能更好地作为数组["HTTP...", ...])。 - Daniel Roseman
1
感谢您,@DanielRoseman 编辑了预期输出。 - Amir
1
如果您得到的输出是二进制的,那么在执行json.dumps之前,您必须将其转换为字符串。 - Harsha Biyani
1个回答

7

我认为你需要将二进制响应转换成文本。以下几行代码可以实现:

data=json.loads(req.text)
print(data)

1
我不知道为什么这个被踩了。这对我有用,谢谢@Sushruth N! - Jonathan Tuzman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接