如何通过JavaScript从JSON文件中获取name与mail参数?
解决JSON.parse后无法获取name/mail的问题
你的问题出在mltrade.readFile返回的字符串不是纯净的JSON格式——里面包含了控制台日志前缀,且JSON内容里的引号被转义成了",直接JSON.parse无法正确解析出目标对象。
修复步骤
- 清理字符串开头的控制台日志前缀
- 将转义的
"替换为真实双引号" - 去除字符串首尾多余的包裹引号
修复后的代码
var rawData = mltrade.readFile('/data/user/0/com.mltrade.mltrade/data.json'); // 移除日志前缀和首尾的引号 var cleanedData = rawData.replace(/^\[INFO:CONSOLE\(\d+\)\] "/, '').replace(/"$/, ''); // 还原所有转义的引号 cleanedData = cleanedData.replace(/"/g, '"'); // 解析JSON var data = JSON.parse(cleanedData); // 现在可以正常读取属性 console.log(data.name); // Bob console.log(data.mail); // google@gmail.com
失败原因说明
你之前直接解析的字符串包含非JSON的日志内容和转义字符,JSON.parse无法识别这种非法格式,解析后得不到预期的对象结构,因此读取name会返回undefined。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

