JSON.parse () возвращает строку из строки PythonShell - PullRequest
0 голосов
/ 13 сентября 2018

Я использую PythonShell из Node для запуска скрипта Python, который возвращает словарь Python следующим образом (в Python):

{ "playedStatus": game['playedStatus'].encode('ascii'),
"awayTeamAbb": game['awayTeamAbb'].encode('ascii'),
"homeTeamAbb": game['homeTeamAbb'].encode('ascii'),
"sport": 'NFL'}

Когда Python dict передается обратно на узел, он в строковом формате, например:

{'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 голосов
/ 13 сентября 2018

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

Если вы сделаете typeOf для вашего python_string_object сразу после его получения, он будет иметь тип string.нет необходимости JSON.stringify () 2 это

0 голосов
/ 13 сентября 2018

Сначала получите ваш python скрипт, чтобы вернуть дамп JSON, а не дикт: Режим 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!
});
0 голосов
/ 13 сентября 2018

Я думаю, вам нужно взять свой словарь и использовать пакет json в python, чтобы превратить его в правильный json.Сначала используйте json.loads(), чтобы превратить словарь в строку, а затем вы можете использовать json.dumps() и вернуть результат в своем скрипте Python, чтобы убедиться, что словарь выводится в форме json.

Я считаю, что этодубликат этого вопроса: Преобразование словаря в JSON на python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...