我正在使用Node的PythonShell运行一个Python脚本,该脚本返回这样的Python字典(在Python中):
{ "playedStatus": game['playedStatus'].encode('ascii'),
"awayTeamAbb": game['awayTeamAbb'].encode('ascii'),
"homeTeamAbb": game['homeTeamAbb'].encode('ascii'),
"sport": 'NFL'}
将Python字典传递回Node时,其格式如下:
{'home': 'CHI', 'sport': 'NFL', 'playedStatus': 'UNPLAYED', 'away': 'SEA'}
我尝试以几种不同的方式通过JSON.parse运行此字符串,以将其用作Javascript对象。但是,我继续返回一个字符串而不是一个对象。
let parsed_JSON = JSON.parse(JSON.stringify(python_string_object));
console.log(typeof parsed_JSON); //returns 'string'
我在做什么错?如何将其转换为对象?
答案 0 :(得分:0)
我认为您需要带上字典并使用python的json
包将其转换为正确的json。首先,使用json.loads()
将字典转换为字符串,然后可以使用json.dumps()
并将结果返回到python脚本中,以确保字典以json形式输出。
我相信这是该问题的重复:Converting Dictionary to JSON in python
答案 1 :(得分:0)
python_string_object={'home': 'CHI', 'sport': 'NFL', 'playedStatus': 'UNPLAYED', 'away': 'SEA'}
let parsed_JSON = JSON.parse(JSON.stringify(python_string_object));
console.log(typeof parsed_JSON);//object
python_string_object="{'home': 'CHI', 'sport': 'NFL', 'playedStatus': 'UNPLAYED', 'away': 'SEA'}"
let parsed_JSON2 = JSON.parse(JSON.stringify(python_string_object));
console.log(typeof parsed_JSON2);//string
如果在获取python_string_object时对它执行typeOf,则它将为string类型。不需要JSON.stringify()2
答案 2 :(得分:0)
首先获取您的 python 脚本以返回JSON转储而不是字典:
import json
my_dict = {'home': 'CHI', 'sport': 'NFL', 'playedStatus': 'UNPLAYED', 'away': 'SEA'}
json_dict = json.dumps(my_dict)
print(json_dict)
然后在您的节点端,使用python-shell使用 json模式进行解析,然后完成:
const PythonShell = require('python-shell');
const pyshell = new PythonShell('script.py', { mode: 'json' });
pyshell.on('message', function (response) {
console.log(response); // response is already an object!
});