簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM