【JavaWeb】JSON学习与数据格式转换
注:本文章基于尚硅谷JavaWeb相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!
文章目录
- 一、JSON对象的定义和访问
- 二、JSON的常用方法
- 三、其它数据和json之间的相互转换
-
- javabean和JSON之间的转换;
- List集合和json之间的转化
-
- (1)多个java对象的list集合转JSON:
- (2)字符串json转List(特殊)
- Map集合和json数据之间的转换
-
- (1)Map集合转json数据:
- (2)JSON数据转map集合(特殊)
一、JSON对象的定义和访问
json是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。json采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持。这样就json称为理想的数据交换格式;
json在JavaScript中的使用:
json的定义:
json是由键值组成,并且由花括号包围,每个键由引号引起来,键和值之间使用冒号进行分隔,多组键值对之间使用逗号进行分隔
json 就是一个对象
json中的key我们可以理解为为对象中的一个属性;
// json的定义var jsonobj = {"key1" : 12,"key2" : "abc","key3" :true,"key4" : [ 11, "arr",false],"key5" :{"key5_1" : "key5_1_value","key5_2" : "key5_2_value"},"key6:[{"key6_1_1",6611,"key6_1_2","key6_1_2_value"},{"key6_2_1" : 6621,"key6_2_2" : "key6_2_2_value"}]
json中的key的值访问就跟访问对象的属性一样,json对象.key
二、JSON的常用方法
json的两个常用方法:
一种是:对象的形式存在,我们叫它json对象
一种是:字符串的形式存在,我们交它json字符串
JSON.stringify(),把json对象转换成为json字符串
JSON.parseI(),把json字符串转换成为json对象
一般我们在操作json中的数据的时候,需要用到json对象的格式
一般我们要在客户端和服务器之间进行数据交换的时候,使用json字符串;
三、其它数据和json之间的相互转换
javabean和JSON之间的转换;
- 若要使用java操作json数据,则要导入相关的jar包(这里使用谷歌的gson.jar)
- 创建与json数据对应的pojo类
- 创建Gson对象实例,进行转换
这里pojo类的创建省略
创建转换的测试类:
Person person =new Person(1," 国哥好帅");Gson gson = new Gson();String personJsonString=gson.toJson();System.out.pringtln(personJsonString)
运行结果:
json转javabean:
//fromJson把json字符串转换回java对象gson.fromJson(personJsonString,Person.class)
List集合和json之间的转化
(1)多个java对象的list集合转JSON:
List<Person> personlist=new ArrayList<>();personlist.add(1,"国哥")personlist.add(2,"康师傅")Gson gson=new Gson();//把list集合转换为json字符串String personListJsonString=gson.toJson(personlist)System.out.println(personListJsonString)
运行结果如下;
(2)字符串json转List(特殊)
与之前不同的是,如果将字符串json转为List类型,需要撞见一个转换类型类并继承TypeToken
public class PersonListType extends TypeToken<ArrayList<Person>>{}
在测试类中进行转换:
List<Person> list =gson.fromJson(personListJsonString,new PersonLIstType().gettype)
Map集合和json数据之间的转换
(1)Map集合转json数据:
Map<Integer,Person> personMap =new HashMap<>();personMap.put(1,new Person(1,"国哥好帅"));personMap.put(2,new Person(2,"康师傅也好帅"));Gson gson =new Gson();//把map集合转换成json字符串String personMapJsonString =gson.toJson(personMap);
(2)JSON数据转map集合(特殊)
注意,和list一样,如果map集合中只有一个元素,则不需要使用type类,如果有多个元素,则需要和list一样,这里因为是多个元素,所以我们编写一个PersonMapType类;
public class PersonMapType extends TypToken<HashMap<Integer,Person>>{}
在测试类中进行转换:
Map<Integer,Person> personMap2=gson.fromJson(personMapJsonString,new PersonMapType().gettype())
注意:观察以上的业务逻辑,我们会发现,在较为复杂的业务逻辑中,该方式会产生较多的json转换类,且只在json数据转换的时候才起作用,所以这里也可以采用匿名内部类的方式进行编写:
Map<Integer,Person> personMap2=gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>{}.getType)
如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!