Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获取节点中已解码base64数据的值_Javascript_Node.js_Javascript Objects_Node Modules - Fatal编程技术网

Javascript 无法获取节点中已解码base64数据的值

Javascript 无法获取节点中已解码base64数据的值,javascript,node.js,javascript-objects,node-modules,Javascript,Node.js,Javascript Objects,Node Modules,此值已编码为base64 { a: "008078888658936", b: "REA" } 用这个密码解码的 var mytokenvalue = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ==" let decoded = Buffer.from(token, 'base64') 同时,当我尝试获取解码值时 console.log(decoded.a) 我在我的控制台中没有定义。

此值已编码为base64

    {
     a: "008078888658936",
     b: "REA"
    }
用这个密码解码的

    var mytokenvalue = "ewphOiAiMDA4MDc4ODg4NjU4OTM2IiwKYjogIlJFQSIKfQ=="
    let decoded = Buffer.from(token, 'base64')
同时,当我尝试获取解码值时

console.log(decoded.a)
我在我的控制台中没有定义。
请提供帮助

您可能需要使用
.toString()
以字符串形式返回解码后的值

let token=“ewphoaimda4mdc4odg4nju4otm2iwkyjogiljfqsikfq=”;
让decoded=Buffer.from(标记'base64').toString();
控制台日志(已解码);

您可能需要使用
.toString()
以字符串形式返回解码后的值

let token=“ewphoaimda4mdc4odg4nju4otm2iwkyjogiljfqsikfq=”;
让decoded=Buffer.from(标记'base64').toString();
控制台日志(已解码);
您可以执行以下操作:

    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);
你可以做:

    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);

它是一个缓冲区,不是一个对象。使用
JSON.parse
At
Buffer.from(token
token
未定义的
可能重复的-Jonas Wilms,返回异常:caughtException但无错误msgSyntaxError:JSON中位置2处的意外标记c是缓冲区,而不是对象。使用
JSON.parse
At
Buffer.from(token
token
未定义的
可能重复的-Jonas Wilms,返回异常:caughtException但无错误msgSyntaxError:JSON中位于位置2的意外标记c复制我的代码,问题是获取对象的元素。像这个console.log(decoded.a);Afeez,你是个甜心:)这里的一些人实际上在试图帮助您。问题可能是在您编码之前JS对象的格式不正确。请尝试以下标记:“ewogICJhIjogIjAwODA3ODg4ODY1ODkzNiIsCiAgImIiOiAiYWZlZXoiCn0=”OP提供的base64解码为无效的JSON,因为属性名称没有用引号括起来。
{a:“…”
不是有效的JSON,但是
{“a”:“…”}
是有效的。假设编码的base64文本确实代表有效的JSON,这是正确的答案。感谢复制我的代码,问题是获取对象的元素。像这个console.log(decoded.a);Afeez,你是个甜心:)这里的一些人实际上在试图帮助您。问题可能是在您编码之前JS对象的格式不正确。请尝试以下标记:“ewogICJhIjogIjAwODA3ODg4ODY1ODkzNiIsCiAgImIiOiAiYWZlZXoiCn0=”OP提供的base64解码为无效的JSON,因为属性名称没有用引号括起来。
{a:“…”
不是有效的JSON,但
{“a”:“…”}
是有效的。假设编码的base64文本确实表示有效的JSON,这是正确的答案。