如何获取节点js中json变量的所有属性并将其全部放入txt文件中? 如果JSON的结构如下所示,则我只能创建该属性的txt文件。
// JSON Variable
const jsonValue1 = {
"prop1": "val1",
"prop2": "val2",
"prop3": "val3",
}
const fs = require('fs')
const keys = Object.keys(jsonValue1)
const fileName = './keys_id.txt'
fs.writeFileSync(fileName, keys.join('\n))
//在keys_id.txt文件中输出
prop1
prop2
prop3
但是,如果我的JSON结构如下:
const jsonValue2 = {
"prop1": "val1",
"prop2": {
"prop2_1": "val2_1"
"prop2_2": "val2_2"
}
"prop3": "val3"
}
如何获取嵌套属性?实际上,我在文件中的预期输出将是这样的:
prop1
prop2.prop2_1
prop2.prop2_2
prop3
有可能吗?
答案 0 :(得分:2)
在输入对象的app.get('/:id', async (req, res) => {
const { id } = req.params;
// Retrieve model which contain info documents of user with id
const UserInfo = mongoose.model('User_' + id, UserInfoSchema);
const logs = await UserInfo.find();
res.send(logs);
})
上使用递归reduce
:
entries
请注意,您需要更正const inputObj = {
"prop1": "val1",
"prop2": {
"prop2_1": "val2_1",
"prop2_2": "val2_2"
},
"prop3": "val3"
};
const getKeys = (obj, props=[], accum=[]) => (
Object.entries(obj).reduce((a, [key, val]) => {
const thisPropArr = [...props, key];
if (typeof val === 'object') {
a.push(...getKeys(val, thisPropArr))
} else {
a.push(thisPropArr.join('.'));
}
return a;
}, accum)
);
console.log(getKeys(inputObj));
对象的语法-键值对必须用逗号分隔。 (仅用空格隔开的对将产生jsonValue2
)
还请注意,您拥有的只是一个普通对象,而不是JSON-JSON是一种以字符串格式表示对象的方法。如果不涉及序列化/反序列化,则也不涉及JSON。最好将输入对象命名为SyntaxError
,而不是inputObj
,以免混淆自己。