一、基础方法
JSON格式是一种轻量级的数据交换格式,常常被用于前后端数据传递。对于前端的开发者,需要将其转化成数组的格式,来便于进行后续操作。首先让我们看看最简单的JSON转数组方法。
const JSONstr = '{"name":"Joe", "age":25, "gender":"male"}';
const arr = JSON.parse(JSONstr);
console.log(arr); // ["name": "Joe", "age":25, "gender":"male"]
通过 JSON.parse 将JSON字符串转换成可查询的 JavaScript 对象,得到.keys()可获取JSON数据的所有key,.map() 和 .reduce() 常被用来提取 JSON 对象的值到数组中。
const data = {"Apple": 10, "Orange": 20, "Mango": 30};
const dataList = Object.keys(data).map(function(key) {
return [key, data[key]];
});
console.log(dataList); // [["Apple", 10], ["Orange", 20], ["Mango", 30]]
Object.keys 函数可以获取所有的JSON对象key,然后通过.map() 将key-value放入二维数组中。在这个过程中遍历JSON对象的key和value,就可以得到完整的数组数据。
二、数组合并
JSON数组数据合并的方式有两种,一种是像下方代码所示,进行递归调用reduce()函数,合并两个JSON数组。
const combined = data1.concat(data2).reduce((arr, item) => arr.some(e => e.name === item.name) ? arr.map(e => e.name === item.name ? Object.assign(e, item) : e) : [...arr, item], []);
console.log(combined);
这一方案通过reduce()函数逐层遍历两个数组,通过Object.assign()完成针对重复值的操作,最终获得新的数组。
另外一种方式是运用数字操作,即使用.concat()函数将两个JSON数组转换成数值操作后再加以合并。具体代码如下:
const newArray = [...jsonArrayA, ...jsonArrayB];
console.log(newArray);
三、使用第三方库
JSON转数组的一个简单的替代方案是使用可靠和功能丰富的第三方库,相比于手动方式,使用第三方库操作会更加便捷,更快速。其中,我们推荐使用两个使用较为广泛的库:
- csvjson:这个库可以把CSV格式数据转换成JSON数据。
- json-csv:这个库将JSON数据转换成CSV格式数据。
对于csvjson,可以使用以下代码进行安装和使用:
npm install csvjson
const csvjson = require('csvjson');
const fs = require('fs');
const filePath = './data.csv';
const fileContent = fs.readFileSync(filePath, 'utf8');
const config = { delimiter: ',', escape: '/"'};
const jsonData = csvjson.toObject(fileContent,config);
console.log(jsonData);
对于json-csv,可以使用以下代码进行安装和使用:
npm install json-cvs
const jsoncsv = require('json-csv');
const fs = require('fs');
const filePath = './data.json';
const fileContent = fs.readFileSync(filePath, 'utf8');
const config = { headers: 'key' };
const csvData = jsoncsv.flat(jsonData, config);
console.log(csvData);
四、总结
本文对于JSON转数组从基础操作到高阶操作逐一进行了讲述,并对其中涉及的第三方库进行了介绍。相信经过这篇文章的学习,大家对于JSON转数组的操作已经有了更加丰富的认识,并且可以在实际的开发工作中更加高效地进行操作。