文章目录

  • 前言
  • 一、什么是map和json数组以及JSON对象?
  • 1.1什么是map?
  • 1.2什么是json数组?
  • 1.3什么是JSON对象?
  • 二、三者相互转换
  • 2.1引入fastjson的依赖
  • 2.2map转json字符串
  • 2.3map转JSON对象
  • 2.4json字符串转map
  • 2.5json字符串转JSON对象
  • 2.6JSON对象转json字符串
  • 2.7JSON对象转map
  • 总结



前言

在开发中经常需要存储或者传递一些数据,其中用的比较多的就是map和json,这两者之间长的非常像,都属于key和value的形式,二者有何区别与联系?可以相互转换吗?下面就来介绍一下map和json的区别以及二者相互转换的方法。


一、什么是map和json数组以及JSON对象?

1.1什么是map?

map是K-V类型的数据,map有多种实现类,主要有hashmap、linkedhashmap、treemap等。
map实际上是有一个个entry对象组成,entry对象包含key、value、next、hash值,我们可以往key和value中put值,next指向当前entry对象的下一个对象,hash值是根据key值经过计算得到的hash值。

1.2什么是json数组?

json就是一种数据格式,其本质是一个字符串,标准格式为:名称:值对。其中值可以是数字、字符串(带上双引号)、布尔值(true或false)、数组(方括号)、对象(花括号)。
例如:{“id”:001,“name”:“张三”,“Boolens”:true,“Array”:[a,b,c],"object:{}}。 可以通过辅助类库进行解析,获得对应的值。
json在前后端交互中使用较为广泛。

1.3什么是JSON对象?

JSON是js对象标记,在js中使用js对象进行处理,但是在与后端交互过程中需要发送规定的json格式的字符串,所以在给后端发送或接收数据的时候,需要进行JSON对象与json字符串之间的转换。

二、三者相互转换

使用alibaba的fastjson来进行转换。

2.1引入fastjson的依赖

在pom.xml中添加fastjson依赖:

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.8</version>
        </dependency>

2.2map转json字符串

String str = JSON.toJSONString(myMap);

2.3map转JSON对象

JSONObject JSONObject = JSONObject.parseObject(JSON.toJSONString(myMap));

2.4json字符串转map

Map<String,Object> myMap =  JSONObject.parseObject(jsonStr);

2.5json字符串转JSON对象

JSONObject jsonObject = JSONObject.parseObject(jsonStr);

2.6JSON对象转json字符串

String jsonToStr = jsonObject.toJSONString();

2.7JSON对象转map

先讲JSON对象转换成json字符串,再将json字符串转换成map

Map<String,Object> jsonToMap =  JSONObject.parseObject(jsonObject.toJSONString());

总结

后续还可以根据需要,将数据转换成list数组形式等等,都可以使用fastjson来进行转换,也可以使用谷歌的gson来进行转换。