Kos*_*hur 2 javascript serialization json
我从上游得到下面的字符串。无法控制它。
b"{'text': 'Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)', 'sentiment': '0.25'}"
Run Code Online (Sandbox Code Playgroud)
我想将字符串更改为 JSON。所以我做的第一件事就是删除前面的 b'....' (上游是一个生成 utf-8 字符串作为输出的 python 程序)。所以我使用 substr 删除 'b'..
str = msg.payload.substr(1);
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用JSON.stringify和JSON.parse将字符串转换为 JSON 。
console.log(typeof(str));
var t = JSON.stringify(str);
console.log(typeof(t));
var t = JSON.parse(t);
console.log("First: " + t);
var t = JSON.parse(t);
console.log("Second " + t);
x = t.text;
y = t["text"];
console.log(x + " ---- " + y);
Run Code Online (Sandbox Code Playgroud)
控制台输出:
string
string
First: "{'text': 'Airtel Tower(@ KT Tower in Bang, Greater K
n), 'sentiment': '0.25'}"
Second {'text': 'Vodafone Tower (@ LT Tower in Delhi, Greater K
), 'sentiment': '0.25'}
undefined ---- undefined
Run Code Online (Sandbox Code Playgroud)
即使JSON.stringify删除了额外的引号等,并且JSON.parse似乎不起作用,它也无法将其转换为对象。我究竟做错了什么?
const input = "b'\"{'text': 'Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)', 'sentiment': '0.25'}\"'";
const cleanString = str => str.split('"')[1].replace(/'/g, '"');
console.log(input);
// Result
console.log(JSON.parse(cleanString(input)));Run Code Online (Sandbox Code Playgroud)
"作为分隔符分割字符串{'text': 'Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)', 'sentiment': '0.25'}'为双引号 "。这会给你{"text": "Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)", "sentiment": "0.25"}JSON.parse前一个字符串来获取您的对象