Javascript 将键值对数组转换为JSON
我有一个功能,可以扫描一个目录,并构建一个所有文件夹及其各自文件的密钥、值对Javascript 将键值对数组转换为JSON,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个功能,可以扫描一个目录,并构建一个所有文件夹及其各自文件的密钥、值对 const listNotes = () => { const listing = []; try{ const folders = fs.readdirSync(defaultPath); folders.forEach((folder) => { let v = fs.readdirSync(`${defaultPath}/${folder}`)
const listNotes = () => {
const listing = [];
try{
const folders = fs.readdirSync(defaultPath);
folders.forEach((folder) => {
let v = fs.readdirSync(`${defaultPath}/${folder}`);
listing[folder] = v;
});
} catch (err) {
console.log(err);
}
return listing;
};
这是这种扫描的输出
[ DailyTask: [ 'Chores.json' , 'Sunday.json'] ]
这是一个名为DailyTask的文件夹,包含2个文件
如何将此结构转换为JSON。您的
列表
变量的问题在于它是一个数组
JSON.stringify()
不包括数组中的所有键,只包括项的顺序,例如列表[0]
,列表[1]
。在您的例子中,您并没有真正使用列表
作为数组,而是使用is作为对象。您只需将其设置为对象
,然后在调用JSON.stringify()
时,它将包含键
解决方案
const listNotes = () => {
const listing = {};
try{
const folders = fs.readdirSync(defaultPath);
folders.forEach((folder) => {
let v = fs.readdirSync(`${defaultPath}/${folder}`);
listing[folder] = v;
});
} catch (err) {
console.log(err);
}
return listing;
//If you want to convert to JSON
console.log(JSON.stringify(listing));
};
JSON.stringify(某些对象或数组)
您的第二个代码段不是有效的javascript对象表示法。清单
是一个数组。数组不能有字符串索引。呃,我不太清楚你的意思。我的评论反映了代码学徒所说的话。javascript中的数组([]
)没有字符串索引。因此,如果这是一个对象,正确的对象表示法应该是{DailyTask:['Chores.json','Sunday.json']}
const list={};清单[]=代码>在分配变量时不使用{}
。如果“key”是一个变量,则括号表示法用于数组和对象。谢谢,是的,那是我的错误