js下怎么将map对象转换成json,并可以再后台重新解析成map

JavaScript023

js下怎么将map对象转换成json,并可以再后台重新解析成map,第1张

let map = new Map()

map.set('key1','value1')

map.set('key2','value2')

// Map 转 JSON字符串

let map_string = JSON.stringify([...map])

console.log('map ->json:',map_string)

// JSON字符串转map

let obj = JSON.parse(map_string)

let new_map = new Map()

for(let key of Object.keys(obj)){

new_map.set(key,obj[key])

}

console.log('json ->map:',new_map)

1.JavaScript 的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。

2.类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。

3.如果对同一个键多次赋值,后面的值将覆盖前面的值。

4.只有对同一个对象的引用,Map 结构才将其视为同一个键。Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题。

5.如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键.

import com.alibaba.fastjson.JSON

import com.alibaba.fastjson.JSONObject

import java.util.Map

/**

* JSON字符串自动转换

* Created by zkn on 2016/8/22.

*/

public class JsonToMapTest01 {

public static void main(String[] args){

String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}"

//第一种方式

Map maps = (Map)JSON.parse(str)

System.out.println("这个是用JSON类来解析JSON字符串!!!")

for (Object map : maps.entrySet()){

System.out.println(((Map.Entry)map).getKey()+"     " + ((Map.Entry)map).getValue())

}

//第二种方式

Map mapTypes = JSON.parseObject(str)

System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!")

for (Object obj : mapTypes.keySet()){

System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj))

}

//第三种方式

Map mapType = JSON.parseObject(str,Map.class)

System.out.println("这个是用JSON类,指定解析类型,来解析JSON字符串!!!")

for (Object obj : mapType.keySet()){

System.out.println("key为:"+obj+"值为:"+mapType.get(obj))

}

//第四种方式

/**

* JSONObject是Map接口的一个实现类

*/

Map json = (Map) JSONObject.parse(str)

System.out.println("这个是用JSONObject类的parse方法来解析JSON字符串!!!")

for (Object map : json.entrySet()){

System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue())

}

//第五种方式

/**

* JSONObject是Map接口的一个实现类

*/

JSONObject jsonObject = JSONObject.parseObject(str)

System.out.println("这个是用JSONObject的parseObject方法来解析JSON字符串!!!")

for (Object map : json.entrySet()){

System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue())

}

//第六种方式

/**

* JSONObject是Map接口的一个实现类

*/

Map mapObj = JSONObject.parseObject(str,Map.class)

System.out.println("这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!")

for (Object map: json.entrySet()){

System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue())

}

String strArr = "{{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," +

"{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}}"

// JSONArray.parse()

System.out.println(json)

}

}