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

Ben*_*nji 0 javascript json node.js

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

这就是我所拥有的:

var cars = ["Saab", "Volvo", "BMW"];
Run Code Online (Sandbox Code Playgroud)

这就是我要的:

{
  "cars": [
    {
       "mark" : "Saab"
    },
    {
       "mark" : "Volvo"
    },
    {
       "mark" : "BMW"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Java 有一个名为 Jackson 的库可以帮助解决这个问题。Node.js 没有类似的东西吗?

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

Ter*_*nox 6

这在 Node.js 中确实非常简单,您可以使用 JSON 方法stringifyparse从对象和数组创建字符串。我们可以首先使用reduce从 car 数组中创建一个 car 对象。

我使用 JSON.stringify() 和 null, 4 作为漂亮打印到文件的最后一个参数。如果我们想将所有内容打印到一行,我们只需使用 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);
Run Code Online (Sandbox Code Playgroud)

car.json 文件将如下所示:

{
    "cars": [
        {
            "mark": "Saab"
        },
        {
            "mark": "Volvo"
        },
        {
            "mark": "BMW"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)