本文共 1841 字,大约阅读时间需要 6 分钟。
在学习开发-Native中,从网络请求回来的数据用的json,于是就需要Json和字符串、Json和Map之间的转换。
1.JSON与字符串的转换
1.1Json转换为字符串
/** * * json转字符串 */ static stringToJson(data){ return JSON.parse(data); } 1 2 3 4 5 6 7 1 2 3 4 5 6 7
1.2字符串转JSON
/** *字符串转json */ static jsonToString(data){ return JSON.stringify(data); } 1 2 3 4 5 6 1 2 3 4 5 6
2.Map与Json的转换
Map不能直接转换为Json,Map先要转换为Object,在转换为json。Json转换为Map也不能直接转换,json转为对象,在转换为Map。
2.1Map转换为Json
/** *map转化为对象(map所有键都是字符串,可以将其转换为对象) */ static strMapToObj(strMap){ let obj= Object.create(null); for (let[k,v] of strMap) { obj[k] = v; } return obj; } /** *map转换为json */ static mapToJson(map) { return JSON.stringify(JsonUitl.strMapToObj(map)); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
2.2Json转换为Map
/***对象转换为Map*/static objToStrMap(obj){ let strMap = new Map(); for (let k of Object.keys(obj)) { strMap.set(k,obj[k]); } return strMap;} /** *json转换为map */ static jsonToMap(jsonStr){ return JsonUitl.objToStrMap(JSON.parse(jsonStr)); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
3案例结果
> let myMap = new Map().set('yes', true).set('no', false);> mapToJson(myMap)'{"yes":true,"no":false}'> jsonToMap('{"yes":true,"no":false}');Map { 'yes' => true, 'no' => false} 1 2 3 4 5 1 2 3 4 5
4.Map与数组的转换
4.1Map转为数组
let myMap = new Map().set(true, 7).set({foo: 3}, ['abc']);> [...myMap][[true, 7], [Object { foo=3}, ["abc"]]] 1 2 3 1 2 3
4.2数组转为Map
new Map([[true, 7], [{foo: 3}, ['abc']]])Map { true => 7, Object {foo: 3} => ['abc']} 1 2 1 2
这些基本就Json与Map和字符串的相互转换了。
转载地址:http://dvhni.baihongyu.com/