Angular 6中JSON反序列化为指定对象失败求助
Angular中Base64解码后的JSON转换为ViewToken对象问题解决
嘿,我来帮你理清楚这个问题的根源和解决方案:
你的核心问题出在多余的JSON.stringify调用上!当你执行JSON.parse(JSON.stringify(this.DecodeBase64(this.token)))时,相当于把解码后的JSON对象先转成了字符串,再用JSON.parse解析这个字符串——最终得到的其实是字符串本身,而不是包含target和accessToken属性的对象,这就是为什么访问这两个属性时返回undefined。
修正后的代码
你已经找到正确的修正方式了,直接去掉JSON.stringify即可:
this.decodedToken = JSON.parse(this.DecodeBase64(this.token));
为什么之前的其他方案失效?
- 使用
json2typescript包反序列化报错:因为你传入的不是原始的JSON对象,而是经过stringify转换后的字符串,反序列化工具无法识别这种格式 - 自定义
fromJson方法得到字符数组:同样是因为处理的是字符串而非对象,方法把字符串当成了字符序列来解析 - 键值对映射对象失效:此时
decodedToken是字符串类型,根本没有target和accessToken这些属性键,自然无法完成映射
内容的提问来源于stack exchange,提问作者Dams
相关产品推荐
相关产品推荐

