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());
}
posted @ 2021-01-19 19:21  _小斑鸠  阅读(42)  评论(0)    收藏  举报