SpringMVC——Java返回Json

Json是一种轻量级的数据格式

Jackson使用

导入依赖

 <dependency>                     
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.10.0</version>
 </dependency>

构建springmvc框架

测试:

 package com.yl.controller;
 ​
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.yl.pojo.User;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 ​
 @Controller
 public class UserController {
 ​
     @RequestMapping("/j1")
     @ResponseBody//加了这个注解,就不会走视图解析器,直接返回一个字符串,或者在类上把@Controller改为@RestController
     public String Json1() throws JsonProcessingException {
         //Jackson:ObjectMapper
         ObjectMapper mapper = new ObjectMapper();
         //创建一个对象
         User user = new User("撸撸", 21, "女");
         String str = mapper.writeValueAsString(user);
         return str;
    }
 }

Json乱码问题:

在mvc配置文件中添加:

 <mvc:annotation-driven>
     <mvc:message-converters register-defaults="true">
         <bean class="org.springframework.http.converter.StringHttpMessageConverter">
         <property name="supportedMediaTypes">
             <list>
                 <value>text/html;charset=UTF-8</value>
                 <value>application/json;charset=UTF-8</value>
             </list>
         </property>
     </bean>
     </mvc:message-converters>
 </mvc:annotation-driven>

 

后台传递数组

 @RequestMapping("/j2")
 @ResponseBody
 public String Json2() throws JsonProcessingException {
     ObjectMapper mapper = new ObjectMapper();
 ​
     User user1 = new User("撸撸1号", 21, "女");
     User user2 = new User("撸撸2号", 21, "女");
     User user3 = new User("撸撸3号", 21, "女");
     User user4 = new User("撸撸4号", 21, "女");
     User user5 = new User("撸撸5号", 21, "女");
     List<User> userList = new ArrayList<User>();
     userList.add(user1);
     userList.add(user2);
     userList.add(user3);
     userList.add(user4);
     userList.add(user5);
 ​
     String str = mapper.writeValueAsString(userList);
     return str;
 }

 

后台传递时间

 @RequestMapping("/j3")
 @ResponseBody
 public String Json3() throws JsonProcessingException {
     //ObjectMapper时间解析后的默认格式为时间戳
     ObjectMapper mapper = new ObjectMapper();
     Date date = new Date();
 ​
     //方式一:自定义日期格式
     //       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     //       return mapper.writeValueAsString(sdf.format(date));
 ​
     //方式二:使用ObjectMapper解决,关闭默认时间戳
     mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     mapper.setDateFormat(sdf);
     return mapper.writeValueAsString(date);
 }

 

使用Utils实现代码复用

在utils包下创建JsonUtils

 package com.yl.utils;
 ​
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 ​
 import java.text.SimpleDateFormat;
 ​
 public class JsonUtils {
     public static String getJson(Object object) throws JsonProcessingException {
         return getJson(object,"yyyy-MM-dd HH:mm:ss");
    }
 ​
     public static String getJson(Object object,String dateFormat) throws JsonProcessingException {
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
         mapper.setDateFormat(sdf);
         return mapper.writeValueAsString(object);
    }
 }

修改原先代码:

 package com.yl.controller;
 ​
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.yl.pojo.User;
 import com.yl.utils.JsonUtils;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 ​
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 ​
 @Controller
 public class UserController {
 ​
     @RequestMapping("/j1")
     @ResponseBody
     public String Json1() throws JsonProcessingException {
         User user = new User("撸撸", 21, "女");
         return JsonUtils.getJson(user);
    }
 ​
     @RequestMapping("/j2")
     @ResponseBody
     public String Json2() throws JsonProcessingException {
         User user1 = new User("撸撸1号", 21, "女");
         User user2 = new User("撸撸2号", 21, "女");
         User user3 = new User("撸撸3号", 21, "女");
         User user4 = new User("撸撸4号", 21, "女");
         User user5 = new User("撸撸5号", 21, "女");
         List<User> userList = new ArrayList<User>();
         userList.add(user1);
         userList.add(user2);
         userList.add(user3);
         userList.add(user4);
         userList.add(user5);
         return JsonUtils.getJson(userList);
    }
 ​
     @RequestMapping("/j3")
     @ResponseBody
     public String Json3() throws JsonProcessingException {
         Date date = new Date();
         return JsonUtils.getJson(date);
    }
 }

 

FastJson

1.导入依赖

2.测试

 @RequestMapping("/j4")
 @ResponseBody
 public String Json4() throws JsonProcessingException {
     User user1 = new User("撸撸1号", 21, "女");
     User user2 = new User("撸撸2号", 21, "女");
     User user3 = new User("撸撸3号", 21, "女");
     User user4 = new User("撸撸4号", 21, "女");
     User user5 = new User("撸撸5号", 21, "女");
     List<User> userList = new ArrayList<User>();
     userList.add(user1);
     userList.add(user2);
     userList.add(user3);
     userList.add(user4);
     userList.add(user5);
     String s = JSON.toJSONString(userList);
     return s;
 }
posted @ 2020-09-10 16:56  Fabulo  阅读(614)  评论(0)    收藏  举报