【JavaWeb】JSON学习与数据格式转换

注:本文章基于尚硅谷JavaWeb相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!



一、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)

运行结果:
在这里插入图片描述
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)


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

猜你喜欢

转载自blog.csdn.net/weixin_47418550/article/details/124670164