Estoy usando PythonShell desde Node para ejecutar un script de Python que devuelve un dict de Python así (en Python):

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

Cuando el dict Python se devuelve al Nodo, está en formato de cadena de la siguiente manera:

{'home': 'CHI', 'sport': 'NFL', 'playedStatus': 'UNPLAYED', 'away': 'SEA'}

Intenté ejecutar esta cadena a través de JSON.parse de dos maneras diferentes para usarla como un objeto Javascript. Sin embargo, continúo recuperando una cadena en lugar de un objeto.

let parsed_JSON = JSON.parse(JSON.stringify(python_string_object));
console.log(typeof parsed_JSON); //returns 'string'

¿Qué estoy haciendo mal? ¿Cómo puedo convertir esto en un objeto?

0
Eric Johnson 13 sep. 2018 a las 18:48

3 respuestas

La mejor respuesta

Primero obtenga su script python para devolver el volcado JSON, no el dict:

import json

my_dict = {'home': 'CHI', 'sport': 'NFL', 'playedStatus': 'UNPLAYED', 'away': 'SEA'}
json_dict = json.dumps(my_dict)
print(json_dict)

Luego, en su lado nodo , obtenga python-shell para analizar usando modo json y listo:

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
rafaismyname 13 sep. 2018 a las 16:26
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

Si hace un typeOf en su python_string_object justo cuando lo obtiene, será de tipo string. no hay necesidad de JSON.stringify () 2 it

0
Steve Bohmbach 13 sep. 2018 a las 16:28

Creo que debe tomar su diccionario y usar el paquete json de Python para convertirlo en un JSON adecuado. Primero, use json.loads() para convertir el diccionario en una cadena y luego puede usar json.dumps() y devolver el resultado en su script de Python para asegurarse de que el diccionario se emita en formato json.

Creo que este es un duplicado de esta pregunta: Conversión de diccionario a JSON en python

0
mindfolded 13 sep. 2018 a las 16:22