美文网首页
一、JSON

一、JSON

作者: superNeil | 来源:发表于2020-06-12 20:05 被阅读0次

1、定义

JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式

2、格式

JSON 就是一种有格式的字符串。

JSON 与 JS 对象的关系

很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSON</title>
    <script src="/static/jQuery-1.11/jquery-1.11.3.js"></script>
    <script>
        
        // 写 JSON,这个格式的字符串里面存一个员工数据 id 1 name zs age 18
        
        var jsonStr1='{"id":1,"name":"张三","age":18}'
        console.log(jsonStr1)
        //alert(jsonStr1);
        
        // 写 JSON,这个格式的字符串里面存两个个员工数据 id 1 name zs age 18 id 2 name ls age 19
        var jsonStr2='[{"id":1,"name":"张三","age":18},{"id":2,"name":"李四","age":20}]'
        console.log(jsonStr2);
        
        // 写 JSON,这个格式的字符串里面存一个员工数据 id 1 name zs age 18 部门 id 5 name 开发部
        var jsonStr3='[{"id":1,"name":"张三","age":18,"dept":{"id":5,"name":开发部}]'
        console.log(jsonStr3);
        
        //***********************************************************************************
        
        //js 对象
        console.log("下面打印的是js对象");
        console.log("注意 对象 才能获取属性 , JSON 只是 字符串 , 不能直接获取属性 , 除非你去切割哈, 或者转为 对象再获取");

        var jsObj1 = {"id":1,"name":"张三","age":18}
        console.log(jsObj1);
        console.log("获取name属性 : "+jsObj1.name);

        var jsObj2 = {id:1, name:"zs", age:18};
        console.log(jsObj2);
        console.log("获取name属性 : "+jsObj2.name);
        //***********************************************************************************
        
        //***********************************************************************************
        //下面 我们来演示下 JSON 与 js 对象的 转换
        //用到 两个方法 :  JSON.stringify()  JSON.parse()
        
        console.log("js对象转为JSON :"+JSON.stringify(jsObj1));
        console.log(JSON.parse(jsonStr1));
        
        // 字符串 + 对象 是打印不出来的哦
        //例如 : console.log("JSON转为js对象 :"+ JSON.parse(jsonStr1)); 错误示范

        //***********************************************************************************
    </script>
</head>

<body>
<button type="submit" id="btn1">提交</button>

</body>
</html>

在JAVA 中的 JSON

两种方式 :

Jackson | Fastjson 记得添加依赖

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.6</version> </dependency>
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>

Jackson ( 常用 )

(api : objectMapper.writeValueAsString(department) | objectMapper.readValue("{"id":1,"name":"小明","sn":"xm"}", Department.class))
public class JsonTest {
    @Test
    public void testJackson() throws IOException {
        String jsonStr = "{\"id\":1,\"name\":\"张三\",\"age\":18}";

        //JSON 与 Java 对象转换
//        开发中一般都会使用第三方的一些 JSON 操作的依赖或者 JAR 包来来完成 Java 对象与 JSON 字符串之间
//        的转换。
//        在 Java 中,转换 JSON 的依赖或者 JAR 有很多,这里单讲两种常用:
//        Jackson:在 Spring MVC 中内置支持她,速度也挺快,稳定性比较好。
//        Fastjson:阿里出品,号称是 Java 领域中转换 JSON 最快的一个插件,中文文档比较齐全。
        //创建一个 java 对象
        Department department = new Department(1L,"开发部","dev");
        ObjectMapper objectMapper = new ObjectMapper();
        //java对象 转 JSON
        System.out.println(objectMapper.writeValueAsString(department));
        //JSON 转 java对象  注意 要转成 什么类型的 java 对象  所以后面 需要 加多个参数
        System.out.println(objectMapper.readValue("{\"id\":1,\"name\":\"小明\",\"sn\":\"xm\"}", Department.class));
    }

Fastjson

(api : JSON.toJSONString(department) | JSON.parseObject("{"id":1,"name":"开发部","sn":"dev"}", Department.class)
@Test
    public void testFastjson() throws IOException {
        //创建一个 java 对象
        Department department = new Department(1L,"开发部","dev");

        //java对象 转 JSON
        System.out.println(JSON.toJSONString(department));
        //JSON 转 java对象  注意 要转成 什么类型的 java 对象  所以后面需要 加多个参数
        System.out.println(JSON.parseObject("{\"id\":1,\"name\":\"开发部\",\"sn\":\"dev\"}", Department.class));
    }

2、Spring MVC 响应 JSON 步骤

在 pom.xml 中添加 Jackson 依赖。

在 mvc.xml 配置 MVC 注解解析器。

定义一个类,里面提供对应属性封装数据。

在要响应 JSON 数据的控制器的处理方法上贴 @ResponseBody 注解,且方法返回类型为上面定义的类。

在处理方法中创建上面定义类 的对象,封装数据返回即可。

实例说话

@Controller
public class JsonController {

    @RequestMapping("/getTime")
    @ResponseBody //加了 这个 就不是跳转的意思 哦  注意
    public JsonResult getTime(){
        Date date = new Date();
        JsonResult jsonResult = new JsonResult(true,date.toLocaleString());
        return jsonResult;

        //有了 注解 , 很简单 . 直接创建对象 使用注解 @ResponseBody  就会自动转成 JSON  .
    }

    @Autowired
    private IDepartmentService departmentService;

    @RequestMapping("/getDepartments")
    @ResponseBody //加了 这个 就不是跳转的意思 哦  注意
    public List<Department> list(){
        List<Department> departments = departmentService.selectAll();
        return  departments;
        //有了 注解 , 很简单 . 直接创建对象 数组也可以 使用注解 @ResponseBody  就会自动转成 JSON  .
    }

}

相关文章

网友评论

      本文标题:一、JSON

      本文链接:https://www.haomeiwen.com/subject/uzbntktx.html