Node.js环境下从嵌套JSON生成简化标准JSON的问题咨询
问题1解答:输出标准JSON格式
你现在直接打印的是JavaScript原生对象,Node.js默认输出原生对象时会使用无引号键、单引号字符串的格式,不符合JSON规范。只要调用JSON.stringify()方法将对象序列化为标准JSON字符串即可,还可以通过第三个参数指定缩进空格数实现格式化输出,和你预期的格式完全匹配:
把你代码最后的console.log(result)替换为:
console.log(JSON.stringify(result, null, 4))
参数说明:
- 第一个参数是要序列化的JS对象
- 第二个参数是替换函数,不需要替换的话填null即可
- 第三个参数是缩进空格数,填4就和你预期输出的缩进效果一致
问题2解答:更简洁的实现方案
可以用数组自带的map()方法替代手动for循环,代码更精简,逻辑更直观,不需要手动维护循环索引:
const fields = myJSONObject.metadata.fields const result = { projections: fields.projections.map(item => item.name), filters: fields.filters.map(item => ({ name: item.name, type: item.type })) } // 输出标准JSON console.log(JSON.stringify(result, null, 4))
这个实现的优势:
- 代码量减少近一半,没有冗余的索引判断和临时变量
- 语义化更强,直接就能看出来是对原数组做映射转换
- 避免手动写for循环可能出现的索引越界、变量重复声明等问题
内容的提问来源于stack exchange,提问作者Vinoth Karthick
相关产品推荐
相关产品推荐

