Skip to main content
 首页 » 编程设计

PHP->Python JSON 问题

2024年08月26日23lexus

我做错了什么? 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'}" 

那是一个字符串,不是字典。