SpringMVC-lesson08-json-2023-03-24

发布时间 2023-03-24 20:09:17作者: Rui2022

1\JSON复习

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

      var user ={
        name:"飞剑",
        age:3,
        sex:"男"
      };

      //将js对象转化为json对象
      var json = JSON.stringify(user);
      console.log(json);

      console.log("=================================")

     //将json对象转为js对象
      var obj=JSON.parse(json);
      console.log(obj);

    </script>

</head>
<body>

</body>
</html>

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。

采用完全独立于编程语言的文本格式来存储和表示数据。

简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都能通过 JSON来表示,例如字符串、数字、对象、数组等。看看他的要求和语法格式:

对象表示为键值对,数据由逗号分隔

花括号保存对象

方括号保存数组

JSON键值对是保存 JavaScript对象的一种方式,和 JavaScript 对象的写法大同小异,键/值对组合中的键名写在前并用双引号“”包裹,用冒号:分隔,然后紧接着值:

  • {"name": "QinJiang"}

  • {"age": "3"}

  • {"sex": "男"}

    JSON 和 JavaScript 对象的关系 :

​ JSON 是 JavaScript 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

  1. var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
  2. var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

JSON 和 JavaScript 对象互转

要实现从JSON字符串转换为JavaScript 对象,使用 JSON.parse() 方法:

  1. var obj = JSON.parse('{"a": "Hello", "b": "World"}');
  2. //结果是 {a: 'Hello', b: 'World'}

要实现从JavaScript 对象转换为JSON字符串,使用 JSON.stringify() 方法:

  1. var json = JSON.stringify({a: 'Hello', b: 'World'});
  2. //结果是 '{"a": "Hello", "b": "World"}'

代码测试

新建一个module ,springmvc-05-json , 添加web的支持

在web目录下新建一个 json.html , 编写测试内容

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script type="text/javascript">
  7.  
  8. //编写一个JavaScript对象
  9. var user = {
  10. name: "张三",
  11. age: 18,
  12. sex: "男"
  13. }
  14.  
  15. //将js对象转换为JSON对象
  16. var json = JSON.stringify(user);
  17. console.log(json) //输出到控制台
  18.  
  19. console.log("=======================");
  20.  
  21. //将JSON对象转换为JavaScript对象
  22. var obj = JSON.parse(json);
  23. console.log(obj) //输出到控制台
  24.  
  25. </script>
  26. </head>
  27. <body>
  28. </body>
  29. </html>

查看控制台

2、Springmvc中 controller 返回JSON数据

    目前 Jackson应该是目前比较好的json解析工具

3、Json乱码问题

  1. <!--JSON乱码问题配置-->
  2. <mvc:annotation-driven>
  3. <mvc:message-converters register-defaults="true">
  4. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  5. <constructor-arg value="UTF-8"/>
  6. </bean>
  7. <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  8. <property name="objectMapper">
  9. <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
  10. <property name="failOnEmptyBeans" value="false"/>
  11. </bean>
  12. </property>
  13. </bean>
  14. </mvc:message-converters>
  15. </mvc:annotation-driven>

 

@Controller
public class UserController {
    @RequestMapping( "/j1")
    @ResponseBody //它就不会走视图解析器,它会直接返回一个字符串  或用RestController替代@Controller
    public String json1() throws JsonProcessingException {
        //jackson, ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        User user = new User("飞剑",3,"男");
        String str = mapper.writeValueAsString(user);
        return str;
    }
}