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

本文详细介绍了JSON对象的定义、访问方式以及JSON的常用方法。通过示例展示了Java中如何使用Gson库进行JSON与javabean、List、Map之间的相互转换,包括json字符串的转换和复杂数据结构的处理。同时,文中提供了转换代码实现,便于理解和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本文章基于尚硅谷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)


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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PoJo123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值