SpringMVC-JSON

JSON(JavaScript Object Notation)

JSON是一种十分轻量级的数据交换的格式,我们来讲一下处理JSON字符串的两个库

  1. Jackson
1
2
3
4
5
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>

将对象转为JSON字符串

1
2
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);

这时候,页面再次出现乱码问题

第一种原生的解决方案是

1
@GetMapping(value = "/json1",produces = "application/json;charset=utf-8")

第二种使用springmvc的配置文件,这段配置只针对jackson库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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>

那我们怎么处理时间对象呢?

1
2
3
4
5
6
7
8
@GetMapping("/datejson")
@ResponseBody
public String jsonDate() throws JsonProcessingException {
Date date = new Date();
ObjectMapping objectMapping = new ObjectMapper();
return objectMapping.writeValueAsString(date);
}
//返回的是当时的时间戳

下面是第一种方法

1
2
3
4
5
6
@GetMapping("/datejson")
@ResponseBody
public String jsonDate() throws JsonProcessingException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return new ObjectMapper().writeValueAsString(sdf.format(new Date()));
}

这是第二种方法

1
2
3
4
5
6
7
8
9
@GetMapping("/datejson2")
@ResponseBody
public String jsonDate2() 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);
return mapper.writeValueAsString(new Date());
}
  1. FastJson
1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>

主要的三个类

  1. JSONObject

对应JSON对象,可以使用get方法获取JSON对象的值

  1. JSONArray

代表JSON数据

  1. JSON代表JSONarray和JSONObject的转化

主要用这个类的静态方法去转化JSON字符串和对象

给作者买杯咖啡吧~~~