【发布时间】:2019-02-20 11:02:27
【问题描述】:
我从上游得到低于字符串。无法控制它。
b"{'text': 'Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)', 'sentiment': '0.25'}"
我想将字符串更改为 JSON。所以我做的第一件事就是删除前面的 b'....' (上游是一个 python 程序,它产生 utf-8 字符串作为输出)。所以我正在使用 substr 删除 'b' ..
str = msg.payload.substr(1);
然后我尝试使用 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);
控制台输出:
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
即使 JSON.stringify 删除了多余的引号等,并且 JSON.parse 似乎不起作用,它也无法将其转换为对象。我做错了什么?
【问题讨论】:
-
您还必须将
'替换为",因为 JSON 仅支持双引号。 -
您的
Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)'开头不是缺少单引号'吗? -
我不知道 1 票赞成,因为有问题的数据本身是错误的
-
我在错误复制时删除了丢失的单引号。现在更新了。 @molamk
标签: javascript json serialization