> 文档中心 > 【JavaWeb】JSON学习与数据格式转换

【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之间的转换;

  1. 若要使用java操作json数据,则要导入相关的jar包(这里使用谷歌的gson.jar)
  2. 创建与json数据对应的pojo类
  3. 创建Gson对象实例,进行转换

这里pojo类的创建省略
创建转换的测试类:

Person person =new Person(1," 国哥好帅");Gson gson = new Gson();String personJsonString=gson.toJson();System.out.pringtln(personJsonString)

运行结果:
【JavaWeb】JSON学习与数据格式转换
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)

运行结果如下;
【JavaWeb】JSON学习与数据格式转换

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

如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!
在这里插入图片描述