JSON序列化数组或对象以及JSON反序列
简单说明
关于json是什么我就不多去介绍了
以下只对 json格式的String类型 和 对象或数组 进行转换
如果需要将数据转json必须要分成以下两种情况,反序列化也一样
- List<> 数组转JSON
- 对象转JSON
map<>集合实际上就是对象;
set<>数组将相当与List<>数组 。
补充
如果目前正在企业上班的hxd先去问下部门的同事目前正在使用的Json工具类是什么。主要是考虑一下目前使用的技术栈吧。毕竟如果后期淘汰了某些技术,你还需要回头来改这些。
↓ 还未上班的我们继续 ↓
工具
FastJson
依赖地址:https://mvnrepository.com/artifact/com.alibaba/fastjson
工具包名:com.alibaba.fastjson.JSON
注意:包别导错了!特别用了多种不同工具类的包会直接报错
对象与Json的String类型的转换
实体类Neo.class
//这些是lombok的注释标签,自行编写set,get等方法也行
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@ToString
public class Neo {
private int id;
private String name;
}
测试类主体:
@Test
public void ObjTest(){
Neo object = new Neo(1,"象象");
//Json序列化对象并存入String
//(注意要判空!虽然不会报错,但是会调用对象的无参构造方法,会引起参数的错误判断)
//if (object!=null)
//objStr => {"id":1,"name":"象象"}
String objStr = JSON.toJSONString(object);
//反序列化json并转换为java类
//neo.toString => Neo(id=1, name=象象)
Neo neo = JSON.parseObject(objStr).toJavaObject(Neo.class);
//只取JsonObj的部分数据>>直接调对应的get方法就好了
JSON.parseObject(objStr).getInteger("id");
JSON.parseObject(objStr).getString("name");
}
List<>数组与Json的String类型的转换
测试类主体:
@Test
public void ListTest(){
//新建个数组[1,2,3](我以Integer类型为例,List里边存对象也是可以的)
List<Integer> list = new ArrayList