1 JSON
推荐一个小工具:CSDN插件可以将后端返回的json数据进行格式化,而且不容易失效毕竟是csdn维护。
JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法,类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式 JSON 独立于语言:
JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON 具有自我描述性,更易理解
它是基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
- 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于计算机解析和生成,并有效的 提升网络传输效率。
- 创建格式
- 常用方法
2 JSON转换工具的介绍
- 我们除了可以在 JavaScript 中来使用 JSON 以外,在 JAVA 中同样也可以使用 JSON。
- JSON 的转换工具是通过 JAVA 封装好的一些 JAR 工具包。
- 可以将 JAVA 对象或集合转换成 JSON 格式的字符串,也可以将 JSON 格式的字符串转成 JAVA 对象。
- Jackson:开源免费的 JSON 转换工具,SpringMVC 转换默认使用 Jackson。
- 导入 jar 包。
- 创建核心对象。
- 调用方法完成转换。
- 常用类
- ObjectMapper常用方法
3 JSON转换练习
- 对象转 JSON, JSON 转对象。
/* JSON转换工具的使用 */ public class ObjectMapperTest { private ObjectMapper mapper = new ObjectMapper(); /* 1.User对象转json, json转User对象 json字符串 = {"name":"张三","age":23} user对象 = User{name='张三', age=23} */ @Test public void test01() throws Exception{ //User对象转json User user = new User("张三",23); String json = mapper.writeValueAsString(user); System.out.println("json字符串:" + json); //json转User对象 User user2 = mapper.readValue(json, User.class); System.out.println("java对象:" + user2); } }
Map转 JSON, JSON 转 Map。
/* 2.map<String,String>转json, json转map<String,String> json字符串 = {"姓名":"张三","性别":"男"} map对象 = {姓名=张三, 性别=男} */ @Test public void test02() throws Exception{ //map<String,String>转json HashMap<String,String> map = new HashMap<>(); map.put("姓名","张三"); map.put("性别","男"); String json = mapper.writeValueAsString(map); System.out.println("json字符串:" + json); //json转map<String,String> HashMap<String,String> map2 = mapper.readValue(json, HashMap.class); System.out.println("java对象:" + map2); }
- Map转 JSON, JSON 转 Map。
/* 3.map<String,User>转json, json转map<String,User> json字符串 = {"一班":{"name":"张三","age":23},"二班":{"name":"李四","age":24}} map对象 = {一班=User{name='张三', age=23}, 二班=User{name='李四', age=24}} */ @Test public void test03() throws Exception{ //map<String,User>转json HashMap<String,User> map = new HashMap<>(); map.put("一班",new User("张三",23)); map.put("二班",new User("李四",24)); String json = mapper.writeValueAsString(map); System.out.println("json字符串:" + json); //json转map<String,User> HashMap<String,User> map2 = mapper.readValue(json,new TypeReference<HashMap<String,User>>(){}); System.out.println("java对象:" + map2); }
List转 JSON, JSON 转 List。
/* 4.List<String>转json, json转 List<String> json字符串 = ["张三","李四"] list对象 = [张三, 李四] */ @Test public void test04() throws Exception{ //List<String>转json ArrayList<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); String json = mapper.writeValueAsString(list); System.out.println("json字符串:" + json); //json转 List<String> ArrayList<String> list2 = mapper.readValue(json,ArrayList.class); System.out.println("java对象:" + list2); }
List转 JSON, JSON 转 List。
/* 5.List<User>转json, json转List<User> json字符串 = [{"name":"张三","age":23},{"name":"李四","age":24}] list对象 = [User{name='张三', age=23}, User{name='李四', age=24}] */ @Test public void test05() throws Exception{ //List<User>转json ArrayList<User> list = new ArrayList<>(); list.add(new User("张三",23)); list.add(new User("李四",24)); String json = mapper.writeValueAsString(list); System.out.println("json字符串:" + json); //json转List<User> ArrayList<User> list2 = mapper.readValue(json,new TypeReference<ArrayList<User>>(){}); System.out.println("java对象:" + list2); }
redis中获得缓存json和解析json
使用github的PageHrlper小工具判空 import com.github.pagehelper.util.StringUtil;
if(StringUtil.isEmpty(provinces))是空为true
public class Springboot01ApplicationTests { @Autowired private AccountService accountService; @Autowired private RedisTemplate<String,String> redisTemplate; @Test public void contextLoads() throws Exception { String list1 = redisTemplate.opsForValue().get("json"); if (StringUtil.isEmpty(list1)){ System.out.println("无缓存"); }else{ System.out.println("从缓存拿出"); ArrayList<Account> arrayList = new ObjectMapper().readValue(list1, ArrayList.class); System.out.println(arrayList); } List<Account> list = accountService.findAll(); String json = new ObjectMapper().writeValueAsString(list); System.out.println(json); redisTemplate.opsForValue().set("json", json); } }
4 小结
- **Jackson:**开源免费的 JSON 转换工具,SpringMVC 转换默认使用 Jackson。
- 可以将 JAVA 对象或集合转换成 JSON 格式的字符串,也可以将 JSON 格式的字符串转成 JAVA 对象。常用类
5 map对象套对象
6 JSON时间类型按标准返回