发表于: 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的生成方法有了一个比较好的了解。

禅道:明天拆



返回列表 返回列表
评论

    分享到