如何在Typescript/Javascript中把数组转换为JSON/从JSON转换为数组

339 阅读3分钟

Casting Array和JSON介绍

在像Angular这样的Typescript应用程序中,Web层将与数据库交互。交互将通过REST API发生。REST API是一个单独的应用程序,用任何语言编写,与数据库对话。REST API接受JSON输入,并输出JSON。

基于MVC模式的Angular应用程序从视图层获取输入信息,并将其存储/保存在一个数组对象中,作为控制器的模型。

在Angular应用程序的开发过程中,我们有许多用例,如下所示

添加/更新数据

用户在用户界面上添加数据,控制器在数组对象中获得数据作为模型,我们需要提供REST API。所以我们需要将这个数组对象转换为JSON对象

从数据库中读取数据

Angular应用程序消耗REST API数据。这些数据的格式是JSON格式。这些数据需要转换为对象数组来显示在用户界面上。当你处理来自REST API的数据时,我们将写一个angular服务来处理数据。服务是控制器和数据层之间请求的委托。

这篇博文涵盖了如何将数组转换为JSON和JSON转换为数组的例子

在进行转换之前,一定要了解JSON的结构,按照JSON的结构来应用逻辑。

typescript是javascript的一个扩展版本。下面的例子也可以在javascript环境下使用。

如何将数组对象转换为JSON,有例子可循

有很多方法 你可以使用forEach方法将数组转换为JSON
以下是代码的解释步骤

  1. 创建数组,并用初始的静态对象对其进行初始化,每个对象包含id和name值
  2. 使用let关键字创建一个临时对象来保存数据。
  3. 数组中的forEach()方法被用来以相同的顺序遍历数组中的元素。这有一个回调函数,对每个元素都进行调用。
  4. 使用lambda表达式,循环浏览每个元素,并将元素添加到一个临时对象。
  5. 最后,JSON.stringify()方法被用来将对象转换成JSON字符串。
let empArray = [{  
    id: '1',  
    name: 'kiran'  
  },  
 {  
    id: '2',  
    name: 'john'  
  },{  
    id: '3',  
    name: 'Frank'  
  },  
];  
  
let jsonObject = {};  
empArray.forEach(item => obj[item.id] = item.name);  
let json = JSON.stringify(jsonObject);  
console.log(empArray);  
console.log(json);  

输出

0: {id: "1", name: "kiran"}  
1: {id: "2", name: "john"}  
2: {id: "3", name: "Frank"}  
{"1":"kiran","2":"john","3":"Frank"}  

使用ES6实例
ES6引入了Spread Operator和Object assign方法来处理数组:

  1. 首先调用数组map()方法,在迭代过程中为每个元素调用一个函数,并为每个元素返回一个新数组。
  2. 这个新数组包含index=0的id:"1 "和index=1的name:"kiran"
  3. 在地图链中用这个值创建一个对象,以返回新的数组。 下一步是把对象的数组复制到新的对象中。
  4. 使用JSON.stringify()方法将此对象转换成JSON字符串。

下面是一个示例代码

let jsonObject = Object.assign(...empArray.map(key => Object.values(key)).map(value => ({ [value[0]]: value[1] })));  
let json = JSON.stringify(jsonObject);  
console.log(empArray);  
console.log(json);  

该代码的输出是相同的

0: {id: "1", name: "kiran"}  
1: {id: "2", name: "john"}  
2: {id: "3", name: "Frank"}  
{"1":"kiran","2":"john","3":"Frank"}  

如何将JSON转换为数组对象

  1. 创建了JSON对象和空数组对象
  2. 使用for...in循环,遍历JSON对象的每个元素。
  3. 使用push方法将每个元素添加到数组中
let jsonObject = {  
    "1": "kiran",  
    "2": "john",  
    "3": "Frank"  
};  
  
var outputArray = [];  
for (let element in jsonObject) {  
    outputArray.push({  
        id: element,  
        name: jsonObject[element]  
    });  
}  
console.log(outputArray)  

输出是

  
0: {id: "1", name: "kiran"}  
1: {id: "2", name: "john"}  
2: {id: "3", name: "Frank"}