精华内容
下载资源
问答
  • Controller返回Json数据

    千次阅读 2019-09-15 14:48:41
    @Controller public class ItemController { @Autowired private ItemService itemService; @RequestMapping("/item/{... 使用@ResponseBody 可以返回Json数据 */ @ResponseBody public TbItem getItemById...
    @Controller
    public class ItemController {
    	@Autowired
    	private ItemService itemService;
    	@RequestMapping("/item/{itemId}")
    	/*
    	使用@ResponseBody 可以返回Json数据
    	*/
    	@ResponseBody
    	public TbItem getItemById(@PathVariable Long itemId) {
    		TbItem tbItem = itemService.getItemById(itemId);
    		return tbItem;
    	}
    }
    

    效果:
    在这里插入图片描述

    展开全文
  • 主要为大家详细介绍了SpringMVC中controller返回json数据的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 文章目录Controller返回JSON数据1. 测试使用2. 代码优化3. 测试集合输出4. 输出时间对象5. 抽取为工具类6. FastJson Controller返回JSON数据 1. 测试使用 这里使用Jackson解析工具用来解析json,这种工具有很多,...

    Controller返回JSON数据

    1. 测试使用

    这里使用Jackson解析工具用来解析json,这种工具有很多,比如阿里的fastjson
    使用它需要导入相应的依赖

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.8</version>
            </dependency>
    

    随便编写一个实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        private String name;
        private int age;
        private String sex;
    }
    
    

    编写对应的控制器Controller

    @Controller
    public class UserController {
        @RequestMapping("/j1")
        @ResponseBody
        public  String json1() throws JsonProcessingException {
            //创建一个jackson的对象映射器,用来解析数据
            ObjectMapper mapper = new ObjectMapper();
            //创建一个User对象
            User user = new User("伊泽瑞尔",18,"男");
            //将对象转换为json格式
            String str = mapper.writeValueAsString(user);
             //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
            return str;
        }
    }
    
    

    测试
    在这里插入图片描述
    这里出现了乱码,设置一下他的编码格式为utf-8,以及它返回的类型;

    通过@RequestMaping的produces属性来实现,修改下代码

    //produces:指定响应体返回类型和编码
    @RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")
    

    在这里插入图片描述
    解决

    2. 代码优化

    乱码统一解决
    上述解决乱码问题太过麻烦,每一个都要解决,可以通过springmvc配置统一解决
    在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置!

    <mvc:annotation-driven>
       <mvc:message-converters register-defaults="true">
           <bean class="org.springframework.http.converter.StringHttpMessageConverter">
               <constructor-arg value="UTF-8"/>
           </bean>
           <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
               <property name="objectMapper">
                   <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                       <property name="failOnEmptyBeans" value="false"/>
                   </bean>
               </property>
           </bean>
       </mvc:message-converters>
    </mvc:annotation-driven>
    

    返回json字符串统一解决
    在类上直接使用 @RestController ,这样子,里面所有的方法都只会返回 json 字符串了,不用再每一个都添加@ResponseBody 。

    //@Controller
    @RestController
    public class UserController {
        @RequestMapping("/j1")
    //    @ResponseBody
        public  String json1() throws JsonProcessingException {
            //创建一个jackson的对象映射器,用来解析数据
            ObjectMapper mapper = new ObjectMapper();
            //创建一个User对象
            User user = new User("伊泽瑞尔",18,"男");
            //将对象转换为json格式
            String str = mapper.writeValueAsString(user);
            //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
            return str;
        }
    }
    
    

    3. 测试集合输出

    添加一个方法

        @RequestMapping("/j2")
        public  String json2() throws JsonProcessingException {
            //创建一个jackson的对象映射器,用来解析数据
            ObjectMapper mapper = new ObjectMapper();
            //创建一个集合存放User对象
            List<User> userList = new ArrayList<User>();
            User user1 = new User("伊泽瑞尔1",18,"男");
            User user2 = new User("伊泽瑞尔2",18,"男");
            User user3 = new User("伊泽瑞尔3",18,"男");
            User user4 = new User("伊泽瑞尔4",18,"男");
            userList.add(user1);
            userList.add(user2);
            userList.add(user3);
            userList.add(user4);
            //将对象转换为json格式
            String str = mapper.writeValueAsString(userList);
            //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
            return str;
        }
    

    测试
    在这里插入图片描述

    4. 输出时间对象

        @RequestMapping("/j3")
        public  String json3() throws JsonProcessingException {
            //创建一个jackson的对象映射器,用来解析数据
            ObjectMapper mapper = new ObjectMapper();
            //创建一个日期对象
            Date date = new Date();
            //自定义日期格式对象
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            //将对象转换为json格式
            String str = mapper.writeValueAsString(sdf.format(date));
            //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
            return str;
        }
    

    在这里插入图片描述

    5. 抽取为工具类

    如果要经常使用的话,这样是比较麻烦的,我们可以将这些代码封装到一个工具类中;

    public class JsonUtils {
        public static String getJson(Object object){
            return getJson(object,"yyyy-MM-dd HH:mm:ss");
        }
        public static String getJson(Object object,String dateFormat){
            ObjectMapper mapper = new ObjectMapper();
            //不使用时间差的方式
            mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
            //自定义日期格式对象
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
            //指定日期格式
            mapper.setDateFormat(sdf);
            try {
                return mapper.writeValueAsString(object);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    

    修改原先代码

    //@Controller
    @RestController
    public class UserController {
        @RequestMapping("/j1")
    //    @ResponseBody
        public  String json1() throws JsonProcessingException {
    
            User user = new User("伊泽瑞尔",18,"男");
    
            return JsonUtils.getJson(user);
        }
        @RequestMapping("/j2")
        public  String json2() throws JsonProcessingException {
    
            //创建一个集合存放User对象
            List<User> userList = new ArrayList<User>();
            User user1 = new User("伊泽瑞尔1",18,"男");
            User user2 = new User("伊泽瑞尔2",18,"男");
            User user3 = new User("伊泽瑞尔3",18,"男");
            User user4 = new User("伊泽瑞尔4",18,"男");
            userList.add(user1);
            userList.add(user2);
            userList.add(user3);
            userList.add(user4);
    
            //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
            return JsonUtils.getJson(userList);
        }
        @RequestMapping("/j3")
        public  String json3() throws JsonProcessingException {
            return JsonUtils.getJson(new Date(),"yyyy-MM-dd HH:mm:ss");
        }
    }
    
    

    测试正常输出

    6. FastJson

    fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。实现json的转换方法很多,最后的实现结果都是一样的。

    fastjson 的 pom依赖

    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.60</version>
    </dependency>
    

    fastjson 三个主要的类:

    JSONObject 代表 json 对象

    • JSONObject实现了Map接口, 猜想 JSONObject底层操作是由Map实现的。

    • JSONObject对应json对象,通过各种形式的get()方法可以获取json对象中的数据,也可利用诸如size(),isEmpty()等方法获取"键:值"对的个数和判断是否为空。其本质是通过实现Map接口并调用接口中的方法完成的。

    JSONArray 代表 json 对象数组

    • 内部是有List接口中的方法来完成操作的。

    JSON代表 JSONObject和JSONArray的转化

    • JSON类源码分析与使用

    • 仔细观察这些方法,主要是实现json对象,json对象数组,javabean对象,json字符串之间的相互转化。

    代码测试

    public class FastJsonDemo {
       public static void main(String[] args) {
           //创建一个对象
    		User user1 = new User("伊泽瑞尔1",18,"男");
            User user2 = new User("伊泽瑞尔2",18,"男");
            User user3 = new User("伊泽瑞尔3",18,"男");
            User user4 = new User("伊泽瑞尔4",18,"男");
           List<User> list = new ArrayList<User>();
           list.add(user1);
           list.add(user2);
           list.add(user3);
           list.add(user4);
    
           System.out.println("*******Java对象 转 JSON字符串*******");
           String str1 = JSON.toJSONString(list);
           System.out.println("JSON.toJSONString(list)==>"+str1);
           String str2 = JSON.toJSONString(user1);
           System.out.println("JSON.toJSONString(user1)==>"+str2);
    
           System.out.println("\n****** JSON字符串 转 Java对象*******");
           User jp_user1=JSON.parseObject(str2,User.class);
           System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1);
    
           System.out.println("\n****** Java对象 转 JSON对象 ******");
           JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);
           System.out.println("(JSONObject) JSON.toJSON(user2)==>"+jsonObject1.getString("name"));
    
           System.out.println("\n****** JSON对象 转 Java对象 ******");
           User to_java_user = JSON.toJavaObject(jsonObject1, User.class);
           System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);
      }
    }
    
    
    展开全文
  • User user = new User(); user.setId(1L); user.setAge(12); user.setName("zhangsan"); user.setBirthDate(new Date())...String jsonString1 = JSON.toJSONString(user); System.out.println(jsonString1); Simpl...
    User user = new User();
    user.setId(1L);
    user.setAge(12);
    user.setName("zhangsan");
    user.setBirthDate(new Date());
    String jsonString1 = JSON.toJSONString(user);
    System.out.println(jsonString1);
    
    SimplePropertyPreFilter filter = new SimplePropertyPreFilter(User.class, "na", "address");
    String jsonString2 = JSON.toJSONString(user, filter);
    System.out.println(jsonString2);
    

    输出结果

    {"id":1,"na":"zhangsan","address":null,"birthDate":"2018-01-08  14:24:28"}
    {"na":"zhangsan","address":null}
    

    上面是在代码中体现的过滤数据,下面直接使用注解

    1.@JSONField(serialize = false)

    2.@JsonIgnore 

     

    展开全文
  • post请求相应的json数据中有中文,前台显示的是????解决问题controller的RequestMapping加上 method=RequestMethod.POST,produces="text/html;charset=UTF-8@ResponseBody @RequestMapping(value="...
    post请求相应的json数据中有中文,前台显示的是????

    解决问题

    controller的RequestMapping加上 method=RequestMethod.POST,produces="text/html;charset=UTF-8

    @ResponseBody
    	@RequestMapping(value="rewriteNewDh",method=RequestMethod.POST,produces="text/html;charset=UTF-8")
    	public String reWrite(HttpSession session, HttpServletRequest request){
    		String dh = request.getParameter("newDh");
    		String epc = request.getParameter("epc");
    		if(StringUtil.canRfid(request.getParameter("newDh"))){
    			Map<String, String[]> param = new HashMap<String,String[]>();
    			param.put("dh", new String[] { dh });
    			String json = APIUtil.post(APIUtil.dhToId, param, session);
    			Map<String, Object> jsonMap = JsonUtil.toObject(json, Map.class);
    			if (MapUtils.getBooleanValue(jsonMap, Const.SUCCESS)) {
    				RfidWrite.write(epc, dh); //给指定的epc 写入党号
    			}
    			return JsonUtil.getJsonStr(true,MapUtils.getString(jsonMap, Const.MESSAGE));
    		}else{
    			return JsonUtil.getJsonStr(false,"档号格式不对,请重新输入 !");
    		}
    		
    	}

    参考链接:

    Spring MVC Controller中返回json数据中文乱码处理

    展开全文
  • 1.jsp的ajax请求: function getJson(){ $.ajax({ type:"get", dataType:"json", url:"getJson", success:function(data){ for(var i=0;i){ aler
  • 我们知道,如果加了标注@ResponseBody,就会返回字符串,他还会自动把对象序列化(返回JSON格式的字符串),所以我们返回的时候不用再手动拼接字符串了 @ResponseBody @RequestMapping(value = &quot;/cmdb/...
  • 我需要自己组装个json格式的数据,然后controller返回给客户端。 组装json的时候,我是这样写的: JSONObject jsonObject = new JSONObject(); jsonObject.put("key", UUID.randomUUID().toString()); ...
  • Controller返回Json数据

    千次阅读 2019-10-03 23:12:43
    var jsonData = JqGridHelper.ToJson(jqGridParameter, resultList.ToList());  return Json(jsonData, JsonRequestBehavior.AllowGet);  }  catch (System.Exception ex)  {  return Json(ex.Message, ...
  • ssm框架从controller返回json格式数据到页面

    千次阅读 多人点赞 2020-09-05 19:23:45
    通常前端页面发送ajax请求,我们只需要返回json格式数据就行 1.在pom.xml加入依赖 <properties> <jackson.version>...-- controller返回json --> <dependency> <groupId>com.fast
  • 项目中使用Springmvc controller返回json结果,发现中文为“?”,尝试各种解决办法,都未实际解决,最后在controller的requestmapping中添加参数设置解决。同时总结全面的页面字符乱码设置问题供参考解决。 1)...
  • 所以应该返回json数据,为了有统一优雅的返回对象供前端解析,需要在项目中进行配置。 步骤 在我们自定义的spring.xml配置文件中添加<mvc:annotation-driven/>注解,这个不用说一定是添加了。 添加依赖
  • 主要介绍了ssm框架controller返回json格式数据到页面的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • SpringMVC中controller接收Json数据

    万次阅读 2017-09-13 13:50:05
    SpringMVC中controller接收Json数据 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "ajaxReque
  • Controller层的作用是处理业务逻辑并返回数据,那怎么返回数据呢?接口的请求通过HttpServletRequest和HttpServletResponse实现前后端的交互,ServletResponse中有一个getWriter()方法获取到一个PrintWriter对象,...
  • jsp 向controller传递json数据

    千次阅读 2016-05-16 15:27:58
    jsp通过$.ajax()向controller传递json数据分两种类型:get 和 post: 两种类型发送的http请求数据在不同的位置,get请求数据紧跟于url后面,post请求数据位于requestbody中,所以获取的途径肯定不同。 1.get...
  • ssm controller返回json的步骤

    千次阅读 2020-01-05 16:46:46
    我们已知道,controller不支持直接返回对象,可将java对象,转为json对象,再返回。具体步骤如下 导入json包 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>...
  • 之前学了struts2,比较...controller接口的话必须要返回一个modelAndView。我用ajax返回字符串就够了, 页面不用跳转,请问应该怎么写? ![图片说明](https://img-ask.csdn.net/upload/201702/12/1486889167_308090.jpg)
  • 1.在发送数据时,data键的值一定要写成JSON.stringify(json),将数据转换成json格式,否则会抛出异常 2.basePath是项目根目录: &lt;% String path = request.getContextPath(); String basePath = request....
  • 在使用spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码。后台Java代码:@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = "text/json") public @ResponseBody ...
  • 转自:... SpringMVC中controller接收Json数据 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $....
  • 有时候在用springmvc返回json的时候会出现中文乱码问题,其实这种问题也很好解决   第一种方法就是在 RequestMapping中设置,设置produce属性   @RequestMapping(value = "/upload", method = ...
  • 返回json中午乱码,是没有定义好返回数据的格式,导致服务器的编码和浏览器解析的编码不一致。所以只需要定义好返回的编码格式已经页面接收的编码格式即可。 JSP页面中定义的编码格式是: 前台请求跨域的jsonp数据...
  • 后台返回json数据和前台解析json数据 一般来说web开发中,前台采用json数据提交给后台,后台处理数据以后返回json数据给前台,前台解析json,显示数据。 总而言之,前后台直接交换的数据格式最常用的非json数据...
  • controller方法如何直接返回json数据

    千次阅读 2019-10-16 15:20:14
    需要添加@ResponseBody注解,它依赖于jar包:jackson-...这时,只需要在controller方法体前面增加注解@ResponseBody,就可以实现方法返回什么类型数据,就将什么类型数据转化为json数据返回前端 如何限制前端传过...
  • 害,我还以为很复杂,是我太...controller: @RequestMapping(value = "/register", produces = {"application/json;charset=UTF-8"}) @ResponseBody public String register(@RequestBody User user) { Map<S...
  • package com.controller.dto; import com.fasterxml.jackson.annotation.JsonInclude; import java.io.Serializable; @JsonInclude public class BaseRsp implements Serializable { private static final long...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 93,259
精华内容 37,303
关键字:

controller返回json数据