SpringMVC入门——day3
作者:互联网
一 . JSON(JavaScript Object Notation,JS对象标记)
一种轻量级的数据交换格式,采用 文本格式 来存储和表示数据、
1 . 语法格式:对象 表示为 键值对,数据用 逗号 分割
花括号 保存 对象
方括号 保存 数组
例如:{"name":"Redfish"}
2 . 可以通俗的理解为:JSON 是 JavaScript对象 的字符串表示法,JSON使用 文本 来表示 一个JS对象的信息,本质上是一个字符串
这是一个JavaScript对象:var obj = { a : ' Hello ' , b : ' world ' };
这是一个JSON字符串: var json = { " a " : " Hello " , " b " : " world " };
3 . 相互转换:
JSON字符串 转 JavaScript对象: parse
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
JavaScript对象 转 JSON字符串: stringify
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
4 . Jackson:json解析工具,使用其ObjectMapper(对象映射器)来解析数据
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency>
5 . 乱码问题可在 Spring配置文件中统一处理
<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>
6 . 返回 JSON字符串时,有两种方法: 1 . Controller + ResponseBody
2 . RestController
7 . 使用 ObjectMapper的 writeValueAsString 方法 把 JavaScript对象 解析为 JSON字符串
@RequestMapping(value = "json1") public String json1() throws JsonProcessingException { //创建一个jackson的对象映射器,用来解析数据 ObjectMapper mapper = new ObjectMapper(); //创建一个对象 User user = new User("炖红鱼1号", 18, "女"); //将我们的对象解析成为json格式 String str = mapper.writeValueAsString(user); //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便 return str; }
7 . 当输出时间对象时,默认格式为 时间戳 timestamp
@RequestMapping("/json3") public String json3() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); //创建时间一个对象,java.util.Date Date date = new Date(); //将我们的对象解析成为json格式 String str = mapper.writeValueAsString(date); return str; }
结果为1453245643243,需要改为年月日格式则需如下配置:
@RequestMapping("/json4") public String json4() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); //不使用时间戳的方式 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); //自定义日期格式对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //指定日期格式 mapper.setDateFormat(sdf); Date date = new Date(); String str = mapper.writeValueAsString(date); return str; }
但是如果每次使用都写这么一大段是比较麻烦的,所以将其封装到一个工具类中
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 dataFormat) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); //不适用时间戳的方式 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false); //自定义日期格式对象 SimpleDateFormat sdf = new SimpleDateFormat(dataFormat); //指定日期格式 mapper.setDateFormat(sdf); return mapper.writeValueAsString(object); } }
使用阿里的FastJSON
/*使用阿里的 FastJson*/ @RequestMapping("/fastjson") public String fastjson() throws JsonProcessingException { User user1 = new User("炖红鱼1号", 18, "女"); User user2 = new User("炖红鱼2号", 18, "女"); User user3 = new User("炖红鱼3号", 18, "女"); ArrayList<User> list = new ArrayList<>(); list.add(user1); list.add(user2); list.add(user3); 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); return "hello"; }
标签:mapper,入门,SpringMVC,day3,对象,JSON,User,new,String 来源: https://www.cnblogs.com/TRUENO-86/p/16093372.html