发表于: 2017-11-04 23:44:16
1 731
今天完成的任务:
1.今天早上把任务六交了。
2.准备和讲小课堂。
小课堂讲的是json
说一下json的三种转换方法:
第一种使用gson
需要的依赖:google的一个jar包。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
代码就是:主要是使用gson.toJson(user)来转换成json。
还可以使用gson.fromJson(json,User.class)来转换成对象类型。
@Test
public void demo(){
User user=new User();
Gson gson = new Gson();
String json = gson.toJson(user);
//对象转换成json
System.out.println(json);
System.out.println("------------------------");
User json1=gson.fromJson(json,User.class);
//json转换成对象
System.out.println(json1.getName());
}
第二种:
依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.0</version>
</dependency>
使用注解@ResponseBody。很简单只要使用注解就可以返回json对象,但是要注意有配置
注解驱动:<mvc:annotation-driven/>
//返回一个对象
@RequestMapping(value = "json2",method = RequestMethod.GET)
public @ResponseBody User json2(){
User user=new User();
return user;
}
//返回两个对象。
@RequestMapping(value = "json3",method = RequestMethod.GET)
public @ResponseBody ArrayList json3(){
User user=new User();
Job job =new Job();
ArrayList list=new ArrayList();
list.add(user);
list.add(job);
list.add("能不能返回String类型?");
return list;
}
第三种,使用json-taglib
依赖:json-taglib的依赖,这个需要自己在maven仓库里面添加,直接引用不可以。
添加到maven参考:
<dependency>
<groupId>json-taglib</groupId>
<artifactId>json-taglib</artifactId>
<version>0.4.1</version>
</dependency>
代码:将json添加到model中,返回jsp。
@RequestMapping(value = "/json5",method = RequestMethod.GET)
public String json5(Model model) {
model.addAttribute("user",user);
model.addAttribute("job",job);
list.add(user);
list.add(job);
model.addAttribute("list1",list);
model.addAttribute("message","一段话");
return "json1";
}
jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<%--json object表示json的对象,json property表示对象中的属性,json array 表示json数组--%>
<json:object>
<%--user对象--%>
<json:property name="name" value="${user.name}"/>
<json:property name="age" value="${user.age}"/>
<json:property name="sex" value="${user.sex}"/>
<json:property name="id" value="${user.id}"/>
<%--job对象--%>
<json:property name="occupation" value="${job.occupation}"/>
<json:property name="introduct" value="${job.introduction}"/>
<json:property name="salary" value="${job.salary}"/>
<%--list对象--%>
<json:array name="items">
<json:object>
<json:property name="id" value="${list.get(0).id}"/>
<json:property name="salary" value="${list.get(1).salary}"/>
</json:object>
</json:array>
</json:object>
2.今天运行之前的项目的时候发现redis的缓存部分报错了。
java.io.InvalidClassException: com.common.User; local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = -4486277853172734042 at java.io.ObjectStreamClass.initNonProxy
是因为我在使用redis缓存的时候,将数据缓存到redis中,然后修改了model中的内容,所以导致序列化之后的内容和缓存里面有差别,所以会报错。
解决办法是将缓存清掉,然后重启项目。
明天计划:
明天开始做任务七
遇到问题:
暂时没有
收获:
对json的生成方法有了一个比较好的了解。
禅道:明天拆
评论