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
以下是代码的解释步骤
- 创建数组,并用初始的静态对象对其进行初始化,每个对象包含id和name值
- 使用let关键字创建一个临时对象来保存数据。
- 数组中的forEach()方法被用来以相同的顺序遍历数组中的元素。这有一个回调函数,对每个元素都进行调用。
- 使用lambda表达式,循环浏览每个元素,并将元素添加到一个临时对象。
- 最后,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方法来处理数组:
- 首先调用数组map()方法,在迭代过程中为每个元素调用一个函数,并为每个元素返回一个新数组。
- 这个新数组包含index=0的id:"1 "和index=1的name:"kiran"
- 在地图链中用这个值创建一个对象,以返回新的数组。 下一步是把对象的数组复制到新的对象中。
- 使用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转换为数组对象
- 创建了JSON对象和空数组对象
- 使用for...in循环,遍历JSON对象的每个元素。
- 使用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"}