ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[SpringMVC 03] json

2022-01-08 21:32:49  阅读:156  来源: 互联网

标签:03 RequestMapping SpringMVC JSON json user new objectMapper


SpringMVC 03


1. JSON格式

后端留接口传数据 --- json格式 ---- 前端独立部署渲染数据

JSON:JavaScript Object Notation,js对象标记, 是一种轻量级的数据交换格式,

采用完全独立于编程语言的文本格式存储和表示数据, 有效提升网络传输效率


是JS对象的字符串表示,本质是一个字符串

语法格式:

  • 对象表示为键值对,数据用逗号分隔
  • 花括号保存对象
  • 方括号保存数组

eg:单个对象{"id":1,"age":3,"name":"roy"}

集合对象: [{"id":1,"age":3,"name":"roy"}, {"id":1,"age":3,"name":"roy"}]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script type="text/javascript">
        var user = {
            name : "Roy",
            age:3,
            sex:"boy"
        }
        var userString = JSON.stringify(user);//把一个js对象转换成JSON格式
        console.log(userString);
        console.log(“============”);
        var userAgain = JSON.parse(userString);//把一个JSON字符串转换成前端对象
        console.log(userAgain);
    </script>
</head>
<body>
</body>
</html>

2. JSON解析

(使用包:Jackson或谷歌的gson)

作用: 把对象解析为json格式传送给前端

1. 直接返回字符串

写user(id, age, name)实体类,并写controller:

@ResponseBody 注解表示直接返回字符串内容,而不经过视图解析器

@Controller
public class UserController {
    @RequestMapping("/t1")
    @ResponseBody
    public String json1(){
        User user = new User(1, 3, "roy");
        return user.toString();
    }
}

2. Jackson返回json字符串&乱码

如果是后添加的webapp支持,记得更新lib依赖包

@Controller
public class UserController {
    @RequestMapping("/t1")
    @ResponseBody
    public String json_test() throws JsonProcessingException {
        User user = new User(1, 3, "roy");
        ObjectMapper objectMapper = new ObjectMapper();//new 一个ObjectMapper
        String str = objectMapper.writeValueAsString(user);//调用writeValueAsString(对象)
        return str;
    }
}

返回为:{"id":1,"age":3,"name":"roy"}

乱码问题: 要么走filter, 要么@RequestMapping写:

@RequestMapping(value="/t1", produces = "application/json;charset=utf-8")

后者在springmvc-servlet.xml中配置:

<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.Jackson20bjectMapperFactoryBean">
					<property name="failOnEmptyBeans" value="false"/>
				</bean>
			</property>
		</bean>
	</mvc:message-converters>
</mvc:annotation-driven>

如果是前后端分离,一般都返回json字符串,而不经过视图解析器;所以在Controller类前面直接定义:

@RestController来代替@ControllerRestController只返回字符串。

如果类写@Controller, 下面的方法如果要不走视图解析器,方法要注解@ResponseBody;

如果类写@RestController, 则下面的方法都只返回字符串,

方法上的@RequestMapping("/路径")是用来指定访问的

3. 返回时间

方式一:java中用传统方式设置显示:

@RequestMapping(value="/t2")
@ResponseBody
public String json2() throws JsonProcessingException {
    Date date = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return simpleDateFormat.format(date);
}

方式二:使用jackson的方式

@RequestMapping(value="/t2")
@ResponseBody
public String json2() throws JsonProcessingException {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);//设置不走时间戳
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    objectMapper.setDateFormat(simpleDateFormat);//设置objectMapper的格式
    Date date = new Date();
    return objectMapper.writeValueAsString(date);
}

标签:03,RequestMapping,SpringMVC,JSON,json,user,new,objectMapper
来源: https://www.cnblogs.com/Roy2048/p/15779672.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有