我正在从上游进入弦下。无法控制它。
b"{'text': 'Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)', 'sentiment': '0.25'}"
我想将字符串更改为JSON。所以我要做的第一件事是删除前面的b'....'(上游是一个生成utf-8字符串作为输出的python程序)。因此,我要使用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 似乎不起作用。我在做什么错了?
答案 0 :(得分:1)
这里有一个问题:单引号字符串文字不是有效的JSON。 JSON基于JavaScript,但这不是一回事。如果要在JavaScript代码中编写对象文字,可以;如果您确实需要JSON,则需要使用“。
答案 1 :(得分:1)
apiVersion: v1
kind: Service
metadata:
name: node
labels:
app: node
tier: backend
spec:
type: LoadBalancer
ports:
- port: 3000
nodePort: 30005
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)));
作为分隔符"
{'text': 'Airtel Tower (@ BT Tower in Chasdmzoa, Delhi)', 'sentiment': '0.25'}
和双引号 '
。这将给您"
JSON.parse
以获取对象答案 2 :(得分:0)
最简单的答案(针对非反eval
狂热分子):
var string = msg.payload.substring(3,msg.payload.length-2);
var t = eval("(" + string + ")");
如果您无法忍受或无法使用(严格模式?)eval
,则需要将单引号转换为双引号进行解析,因为JSON仅接受双引号:>
var string = msg.payload.substring(3,msg.payload.length-2);
var t = JSON.parse(string.replace(/'/g, "\""));