我做错了什么? Python3:
>>> import json
>>> s = "\"{'key': 'value'}\""
>>> obj = json.loads(s)
>>> obj['key']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
给定的 JSON 字符串由来自 php 的 json_encode() 生成
Real string:
{sessionid:5,file:\/home\/lol\/folder\/folder\/file.ttt}.
更新:问题是因为我将 json 字符串作为命令行传输到 php 中的 shell_exec,并使用 sys.argv[1] 读取它>...所以引号被 shell 删除。
PHP 代码(使用 shell_exec 运行 python 脚本)
$arg = json_encode(['sessionid' => $session->getId(), 'file' => $filename]);
shell_exec('python3 script.py ' . $arg);
Python代码:
import json, sys
s = json.loads(sys.argv[1]) #fails already
请您参考如下方法:
看看这个 JSON:
"\"{'key': 'value'}\""
您有一个包含转义引号的字符串,后跟一个类似字典的对象,然后是一个转义引号。当您尝试对此进行解码时,您会得到以下结果:
"{'key': 'value'}"
那是一个字符串,不是字典。
