将TXT转JSON后获取Reference值返回undefined,求技术解决
问题分析与修复
你的代码有两个核心问题导致obj.Reference返回undefined:
1. 多余的JSON.stringify()调用
你先把模板字符串用JSON.stringify()转成了JSON格式的字符串(相当于给整个文本套了一层双引号),之后JSON.parse()解析出来的结果还是原始的模板字符串文本,而不是你期望的JavaScript对象。字符串自然没有Reference属性,所以返回undefined。
2. 原始文本不符合JSON语法规范
就算去掉JSON.stringify(),你写的模板字符串也不是合法的JSON,JSON有严格要求:
- 所有对象键必须用双引号包裹(比如
ErrorList要改成"ErrorList",80要改成"80") - 字符串值必须用双引号(你用了单引号,这在JS里允许,但JSON不允许)
修复后的代码
// 先把文本改成合法的JSON格式,所有键和字符串值用双引号 const txt = `{ "ErrorList": [{"80": "Prepared"}], "Reference": [ { "Rule Name": "Missing 3", "Rule ID": 1, "Rule Des": "Did they provide News ?" }, { "Rule Name": "Missing Zip", "Rule ID": 2, "Rule Des": "Is field ?" } ], "Hard Violation": [ { "Violation": 0, "Initial Servicer": "BI", "Total Confirmed": 0, "Last Date": "05/16/2021" }, { "Violation": 0, "Initial Servicer": "BI", "Total Confirmed": 3, "Last Date": "12/19/2019" } ] }`; // 直接解析合法的JSON字符串 const obj = JSON.parse(txt); console.log(obj.Reference); // 现在能正常输出Reference数组了
额外提示
如果你的原始TXT内容就是这种类似JS对象的格式(不是严格JSON),也可以用eval()来解析,但强烈不推荐(存在安全风险),最好还是转换成标准JSON格式再解析。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

