无法获取节点中已解码的base64数据的值
此值已编码为base64
{
a: "008078888658936",
b: "REA"
}
并使用此代码解码
var mytokenvalue = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ=="
let decoded = Buffer.from(token, 'base64')
同时,当我试图获得解码值
console.log(decoded.a)
我在我的控制台中未定义。请帮忙
回答如下:你可以这样做:
var token = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ==";
eval('var decoded = ' + Buffer.from(token, 'base64').toString());
console.log(decoded.a);
但是如果base64编码的字符串可以来自你无法控制的地方,那么eval
是非常危险的。任意字符串可能会扩展为某些意外的JavaScript,这会导致eval
做一些会使您的程序出现异常或违反安全性的行为。
最好将原始对象表示为JSON字符串(使用JSON.stringify
来执行此操作)并对该字符串进行base64编码。然后你可以使用JSON.parse
重建原始对象而不承担使用eval
的风险。像这样:
var obj = { x: "foo", y: 123 };
var obj_json = JSON.stringify(obj);
// obj_json is '{"x":"foo","y":123}'
var obj_b64 = Buffer(obj_json).toString('base64');
// obj_b64 is 'eyJ4IjoiZm9vIiwieSI6MTIzfQ=='
var decoded = JSON.parse(Buffer.from(obj_b64, 'base64').toString());
console.log(decoded.x);