Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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_Node.js_Json - Fatal编程技术网

如何从JavaScript中的数组创建JSON文件?

如何从JavaScript中的数组创建JSON文件?,javascript,node.js,json,Javascript,Node.js,Json,我正在使用JavaScript处理Node.js项目。我的问题是我有一个包含一些数据的数组,我想在数组中使用这些数据来创建一个JSON文件 这就是我所拥有的: var cars = ["Saab", "Volvo", "BMW"]; 这就是我想要的: { "cars": [ { "mark" : "Saab" }, { "mark" : "Volvo" }, { "mark" : "BMW" }

我正在使用JavaScript处理Node.js项目。我的问题是我有一个包含一些数据的数组,我想在数组中使用这些数据来创建一个JSON文件

这就是我所拥有的:

var cars = ["Saab", "Volvo", "BMW"];
这就是我想要的:

{
  "cars": [
    {
       "mark" : "Saab"
    },
    {
       "mark" : "Volvo"
    },
    {
       "mark" : "BMW"
    }
  ]
}
Java有一个名为Jackson的库,可以帮助实现这一点。Node.js没有类似的功能吗

如果问题不符合规则,请告诉我。

var cars=[“萨博”、“沃尔沃”、“宝马”];
const result=cars.reduce((acc,x)=>{
汽车加速({
马克:x
})
返回acc;
}, {
汽车:[]
})

log(result)
这在Node.js中确实非常简单,您可以使用JSON方法并从对象和数组创建字符串。我们可以首先使用从汽车阵列创建汽车对象

我正在使用带有null,4的JSON.stringify()作为最后一个参数来漂亮地打印到文件中。如果我们想将所有内容打印到一行,我们只需要使用JSON.stringify(carObj)

例如:

const fs = require("fs");

const cars =  ["Saab", "Volvo", "BMW"];
const carObj =  cars.reduce((map, car) => { 
    map.cars.push( { mark: car} );
    return map;
}, { cars: []})

// Write cars object to file..
fs.writeFileSync("./cars.json", JSON.stringify(carObj, null, 4));

// Read back from the file...
const carsFromFile = JSON.parse(fs.readFileSync("./cars.json", "utf8"));
console.log("Cars from file:", carsFromFile);
cars.json文件如下所示:

{
    "cars": [
        {
            "mark": "Saab"
        },
        {
            "mark": "Volvo"
        },
        {
            "mark": "BMW"
        }
    ]
}