json概述 - Jackson的使用,bean对象(list列表)与json数据之间相互转换(序列化和反序列化)
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
文章目录
1. json字符串
JSON( JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
1.1 特点
-
完全独立于编程语言的文本格式来存储和表示数据。
-
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
-
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
(son数据的键(key)必须是字符串,值没有限定)
1.2 json的格式语法
- 在JavaScript中json数据可以直接被识别
- 在java代码中,数据和json可以互相转换
2. json转换工具
json的转换工具是通过java封装好的一些jar包,直接将java对象或集合转换成json格式的字符串。
2.1 json的常用转换工具
2.2 Jackson的使用
因为他是免费开源的json转换工具,而且也是springmvc的默认json转换工具
2.2.1 Jaskson的组成
jackson-annotations
:是Jaskson的注解包,提供标准注解功能jackson-core
:是核心包,提供了基于"流模式"解析的相关API,包括JsonPaser和JsonGeneratorjackson-databind
:是数据绑定包,提供基于"对象绑定"解析的相关API(ObjectMapper)和"树模型"解析的相关API(JsonNode)
2.2.2 Jackson的ObjectMapper类【***】
ObjectMapper类是Jackson库的主要类,它的主要功能是:
- 实现java对象向json数据格式的转换(被称为序列化)
- 实现json数据格式向java对象的转换(被称为反序列化)
- 可以使用ObjectMapper类的readValue 方法将JSON内容反序列化为Java对象。
- 可以使用ObjectMapper类的writeValue 方法将Java对象序列化为JSON数据格式。
2.3 案例
- 导入jar包 - 在WEB-INF目录下导入jar包,并将它们加入Library
- 创建User对象(java封装类属性一般是private,所以需要有get/set方法,不然Jackson读取不到)
public class User {
private String name;
private int age;
private String sex;
private String address;
//省略构造方法、getter/setter方法
}
2.3.1 编写测试类,测试ObjectMapper类的writeValueAsString()方法,将javabean转换为json数据格式
//测试对象序列化,将对象转换为json数据格式
public class TestObjectMapper {
//测试单个对象user转换为json数据格式
@Test
public void test01() throws JsonProcessingException {
//1、创建对象user
User user = new User("我是GF_浪夏一学 - 单个对象",21,"男","湖南");
//2、writeValueAsString()方法,将一个user对象转成json字符串
String userJson = new ObjectMapper().writeValueAsString(user);//将javabean转换为json数据格式
System.out.println(userJson);
}
//将一个对象数组转换为json数据格式
@Test
public void test02() throws JsonProcessingException {
//1、创建对象,加入集合中
User user1 = new User("我是集合user1",21,"男","湖南");
User user2 = new User("我是集合user2",20,"女","北京");
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
//2、writeValueAsString()方法,将一个对象数组转换为json数据格式
String userListJson = new ObjectMapper().writeValueAsString(userList);
System.out.println(userListJson);
}
//将一个Map集合转成json字符串
@Test
public void test03() throws JsonProcessingException {
//1:创建对象
User user1 = new User("我是map集合的user1对象",21,"男","湖南");
User user2 = new User("我是map集合的user2对象",20,"女","北京");
//存入map
Map<String,User> map = new HashMap<>();
map.put("user1",user1);
map.put("user2",user2);
//2、writeValueAsString()方法,将一个Map集合转成json字符串
String json= new ObjectMapper().writeValueAsString(map);
System.out.println(json);
}
}
运行结果:
2.3.2. 测试ObjectMapper类的readValue 方法,将json数据格式转化为javabean对象
public class TestObjectMapper {
//将一个json数据转换为user对象
@Test
public void test04() throws IOException {
//1:创建一个json对象
String jsonData = "{\"name\":\"我是GF_浪夏一学\",\"age\":21,\"sex\":\"男\",\"address\":\"湖南\"}";
//2、writeValueAsString()方法,将一个Map集合转成json字符串
User user = new ObjectMapper().readValue(jsonData, User.class);
System.out.println(user);//会输出user的toString()方法
}
}
运行结果:
将json数据格式转化为列表list
//测试json数据转集合list
@Test
public void test05() throws IOException {
String json="[{\"name\":\"我是GF_浪夏一学\",\"age\":21,\"sex\":\"男\",\"address\":\"湖南\"},{\"name\":\"java小皮孩\",\"age\":21,\"sex\":\"男\",\"address\":\"深圳\"}]";
//
ObjectMapper objectMapper = new ObjectMapper();
List<User> userList = objectMapper.readValue(json,new TypeReference<List<User>>(){});//将json转成对象 参1 json数据 参2 new TypeReference<>(){}
System.out.println(userList);
}
运行结果:
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献9条内容
所有评论(0)