JSON
JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
1、JSON 和 JS 对象互转
var user = {
name: "小斑鸠",
motto: "Hello World"
}
// JS对象转换为JSON字符串,使用 JSON.stringify()
var str = JSON.stringify(user);
// JSON字符串转换为JS对象,使用 JSON.parse()
var obj = JSON.parse(str);
json数据表示:
{
"name": "小斑鸠",
"motto": "Hello World"
}
- 花括号保存对象
- 方括号保存数组
2、使用 Controller 实现返回 JSON 数据
正常返回会走视图解析器,市面上有很多第三方jar包可以实现返回字符串,如jackson
1)、导包
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
2)、@ResponseBody,将服务器端返回的对象转换为json对象响应回去。
@ResponseBody
public String json(){
User user = new User("小斑鸠","Hello World");
return new ObjectMapper().writeValueAsString(user);
}
3)、若出现乱码问题,需要设置一下编码格式,以及它返回的类型。
- 通过@RequestMapping的produces属性来实现
@RequestMapping(value = "/xxx", produces = "application/json;charset=utf-8")
- 通过配置文件实现
<!--springmvc 统一解决json中文乱码问题-->
<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>
4)、返回Date问题。
- 时间默认返回的json字符串变成时间戳格式:Timestamp,需关闭它的时间戳功能。
@ResponseBody
public String json() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
//关闭时间戳功能
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TEMESTAMPS, false);
//时间格式化:自定日期格式对象
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
return objectMapper.writeValueAsString(new Date());
}
浙公网安备 33010602011771号