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)
}
}