JSON是什么?JSON的简单介绍及使用

一、JSON介绍

JSON(JavaScript Object Notation)是一种数据结构,当我们需要在不同的应用程序之间传递数据时,我们需要一种通用的格式来表示数据。
相比xml交换格式来说,因为解析xml比较的复杂且需要编写大段的代码,而 JSON 数据更小,也更容易解析。

1、JSON基本语法

JSON 数据与JAVA中的 Map 集合类型一样,都是由 key : value 组成,键和值之间使用 : 分割,多个键值对使用 分割。

下面是一个标准的JSON数据结构:

{
   "name": "John",
   "age": 30,
   "city": "New York"
}

2、JSON数据类型

我们的 JSON 数据类型分为 JSON 对象JSON 数组 这两种类型,可以根据下面的这个 JSON 数据看一下。

{
  "name": "John Smith",
  "age": 30,
  "isMarried": false,
  "hobbies": ["reading", "traveling"],
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  }
}
2.1、JSON对象

使用 { } 花括号表示是一个 JSON 对象,每个键必须是一个字符串,每个值可以是一个字符串数字布尔值null数组或对象

在这个JSON数据中,整个数据可以看成一个 JSON 对象,花括号下的数据都是这个JSON对象的属性。

2.2、JSON数组

使用 [ ] 分括号表示这是一个JSON数组,一个数组可以包含多个值,也可以包含多个对象。

二、JSON数据处理

JSON 数据结构是一种轻量级的数据交换格式,具有语法简单、易于阅读和编写、容易解析和生成等特点,因此在 Web 开发、API 开发、移动应用开发等领域得到了广泛的应用。

1、JSON处理常用框架

  • FastJson:FastJSON是阿里开发的处理JSON数据框架,以性能著称,API使用也较为方便。
  • Jackson:一个流行的JSON处理框架,可以用于序列化和反序列化Java对象和JSON数据。SpringMVC中使用的默认解析器就是使用的Jackson。
  • Gson:Google开发的JSON处理库,可以将Java对象转换为JSON字符串,并将JSON字符串转换为Java对象,也是目前功能最全的Json解析神器。

2、FastJson使用

2.1 引入依赖
        <!-- fastjson -->
        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>2.0.33</version>
        </dependency>
2.2 API使用

分为 JSONObjectJSONArray 两个类,都可以使用 toJSONString() 和 parseObject() 方法来将 Java 对象转换为 JSON,反之亦然。

我这使用的是最新的2.0版本,如果是 1.0+ 版本的话有些 API会有些许变化。

  • JSONObject
        Student student = Student.builder()
                .sno(1)
                .sname("小李")
                .age(19)
                .clazz("1001")
                .subject(new String[]{"语文","数学","英语"})
                .build();

        // 转为JSON对象
        JSONObject object = JSONObject.from(student);
        // java 对象 转为Json字符串
        String jsonString = JSONObject.toJSONString(student);
        System.out.println(jsonString);
        // json 转为java对象
        Student student1 = JSONObject.parseObject(jsonString, Student.class);
        System.out.println(student1);

image

  • JSONArray
        // 转为JSON数组
        JSONArray jsonArray = JSONArray.from(student.getSubject());
        // 将数组或集合转为JSON字符串
        String jsonArrayString = JSONArray.toJSONString(student.getSubject());
        System.out.println(jsonArrayString);
        // 将数组或集合转为集合
        List<String> parseArray = JSONArray.parseArray(jsonArrayString, String.class);
        System.out.println(parseArray);

image

3、Gson使用

3.1 引入依赖
        <!-- gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.9.0</version>
        </dependency>
3.2 API使用

使用的对象和结果与上面的一致。

        Gson gson = new Gson();
        // 将对象转为 json 字符串
        String json = gson.toJson(student);
        System.out.println(json);
        // 将数组转为 json 字符串
        String toJson = gson.toJson(student.getSubject());
        System.out.println(toJson);
        // 将 json 转为对象
        Student student1 = gson.fromJson(json, Student.class);
        System.out.println(student1);

4、Jackson使用

4.1 引入依赖
        <!-- jsckson -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.4</version>
        </dependency>
4.2 API使用
        ObjectMapper objectMapper = new ObjectMapper();
        // 将对象转为 json 字符串
        String valueAsString = objectMapper.writeValueAsString(student);
        // 将对象转为 json 字符串
        String valueArray = objectMapper.writeValueAsString(student.getSubject());
        System.out.println(valueAsString);
        // 将 json 转为对象
        Student student1 = objectMapper.readValue(valueAsString, Student.class);
        System.out.println(student1);
posted @ 2023-06-09 10:31  香酥豆腐皮  阅读(1652)  评论(0编辑  收藏  举报
正在加载今日诗词....