[英]JSON.parse() returning string from PythonShell string
我正在使用來自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'
我究竟做錯了什么? 如何將其轉換為對象?
我認為您需要帶上字典並使用python的json
包將其轉換為正確的json。 首先,使用json.loads()
將字典轉換為字符串,然后可以使用json.dumps()
並在python腳本中返回結果以確保字典以json形式輸出。
我相信這是這個問題的重復: 在python中將Dictionary轉換為JSON
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
首先獲取您的python腳本,以返回JSON轉儲而不是字典:
import json
my_dict = {'home': 'CHI', 'sport': 'NFL', 'playedStatus': 'UNPLAYED', 'away': 'SEA'}
json_dict = json.dumps(my_dict)
print(json_dict)
然后在您的節點端使用json模式獲取python-shell進行解析,然后完成:
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!
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.