JSON.parse()从PythonShell字符串返回字符串

时间:2018-09-13 15:48:26

标签: javascript python json node.js javascript-objects

我正在使用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'

我在做什么错?如何将其转换为对象?

3 个答案:

答案 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!
});