Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将键值对数组转换为JSON_Javascript_Arrays_Json_Object - Fatal编程技术网

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”是一个变量,则括号表示法用于数组和对象。谢谢,是的,那是我的错误