转载请标明出处:http://blog.csdn.net/u010046908/article/details/50926322本文出自:【李东的博客】
在学习开发React-Native中,从网络请求回来的数据用的json,于是就需要Json和字符串、Json和Map之间的转换。
1.JSON与字符串的转换
1.1Json转换为字符串
/**
*
* json转字符串
*/
static stringToJson(data){
return JSON.parse(data);
}
1.2字符串转JSON
/**
*字符串转json
*/
static jsonToString(data){
return JSON.stringify(data);
}
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));
}
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));
}
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}
4.Map与数组的转换
4.1Map转为数组
let myMap = new Map().set(true, 7).set({foo: 3}, ['abc']);
> [...myMap]
[[true, 7], [Object { foo=3}, ["abc"]]]
4.2数组转为Map
new Map([[true, 7], [{foo: 3}, ['abc']]])
Map {true => 7, Object {foo: 3} => ['abc']}
这些基本就Json与Map和字符串的相互转换了。