遍历对象,并且超出了最大调用堆栈大小
我正在尝试读取结构如this的文件的内容>
[获取对象时,我试图找到其嵌套属性名称ErrorCode。但是函数fetch_property始终返回未定义。
这里是功能
read_content = (path) => { fs.readFile(path, 'utf8', function (error, data) { json_data = data // console.log(data) data = JSON.parse(JSON.stringify(data)) tem_data = data // Object.keys(data).forEach(key => console.log(key)) // tem_data = data['Response']['Error'] let result = fetch_property(data, "ErrorCode"); console.log(result) }) } fetch_property = (obj, property) => { if (obj[property] == property) { return obj[property] } else { for (let i in obj) { let found_label = fetch_property(obj[i], property) if (found_label) return found_label } } }
如何从readFile函数返回的内容中获取ErrorCode属性的值?
我刚刚发现即使使用JSON.parse,数据类型仍然是字符串。为什么未将其转换为对象?
我正在尝试读取结构如下的文件的内容:获取对象时,我试图找到其嵌套的属性名称ErrorCode。但是函数fetch_property总是返回...
回答如下:您的代码几乎没有问题。首先,您不需要JSON.stringify
。 JSON.parse
就足够了。其次,您的if语句if (obj[property] == property)
不起作用。您应该首先遍历所有项目的属性。这是一个工作示例: