Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • Java

  • 微服务笔记

  • MySQL

  • Nginx

  • HTML

  • CSS

  • JavaWeb

    • JavaWeb目录结构
    • HTTP
    • JSP
    • JavaScript
    • Ajax
    • JSON
      • JSON
        • 概念
        • 语法
    • Cookie
    • Session
    • Request
    • Response
    • Servlet
    • Tomcat
    • EL表达式
  • Vue

  • Git

  • 开发规范

  • SpringCloud微服务权限系统

  • bug

  • Software

  • ProgramNotes
  • JavaWeb
Geeks_Z
2022-10-24
目录

JSON

JSON

概念

JavaScript Object Notation JavaScript 对象表示法 Person p = new Person(); p.setName("张三"); p.setAge(23); p.setGender("男");

var p = {"name":"张三","age":23,"gender":"男"};

  • json 现在多用于存储和交换文本信息的语法
  • 进行数据的传输
  • JSON 比 XML 更小、更快,更易解析。

语法

  1. 基本规则
  • 数据在名称/值对中:json 数据是由键值对构成的

    • 键用引号(单双都行)引起来,也可以不使用引号

    • 值得取值类型:

      1. 数字(整数或浮点数)
      2. 字符串(在双引号中)
      3. 逻辑值(true 或 false)
      4. 数组(在方括号中)	{"persons":[{},{}]}
      5. 对象(在花括号中) {"address":{"province":"陕西"....}}
      6. null
      
      1
      2
      3
      4
      5
      6
  • 数据由逗号分隔:多个键值对由逗号分隔

  • 花括号保存对象:使用{}定义 json 格式

  • 方括号保存数组:[]

  1. 获取数据:
1. json对象.键名

2. json对象["键名"]

3. 数组对象[索引]

4. 遍历
    //1.定义基本格式
       var person = {"name": "张三", age: 23, 'gender': true};

        var ps = [{"name": "张三", "age": 23, "gender": true},
            {"name": "李四", "age": 24, "gender": true},
            {"name": "王五", "age": 25, "gender": false}];
    			//获取person对象中所有的键和值
        //for in 循环
      /* for(var key in person){
            //这样的方式获取不行。因为相当于  person."name"
            //alert(key + ":" + person.key);
            alert(key+":"+person[key]);
        }*/

      //获取ps中的所有值
       for (var i = 0; i < ps.length; i++) {
           var p = ps[i];
           for(var key in p){
               alert(key+":"+p[key]);
           }
       }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  1. JSON 对象和字符串对象的互转

    • JSON.stringify( json ); 此方法可以把一个 json 对象转换成为 json 字符串

    • JSON.parse( jsonString ); 此方法可以把一个 json 字符串转换成为 json 对象

  2. JSON 数据和 Java 对象的相互转换

    • JSON 解析器:常见的解析器:Jsonlib,Gson,fastjson,jackson

    • JSON 转为 Java 对象

      • 导入 jackson 的相关 jar 包

      • 创建 Jackson 核心对象 ObjectMapper

      • 调用 ObjectMapper 的相关方法进行转换

        package com.atguigu.gson;
        import java.util.ArrayList;
        import java.util.HashMap;
        import java.util.List;
        import java.util.Map;
        import com.google.gson.Gson;
        import com.google.gson.reflect.TypeToken;
        public class GsonTest {
        static class Person {
            private int age;
            private String name;
            public Person() {
            // Auto-generated constructor stub
            }
            public Person(int age, String name) {
                this.age = age;
                this.name = name;
            }
            public int getAge() {
            	return age;
            }
            public void setAge(int age) {
           		this.age = age;
            }
            public String getName() {
            	return name;
            }
            public void setName(String name) {
            	this.name = name;
            }
            @Override
            public String toString() {
            	return "Person [age=" + age + ", name=" + name + "]";
            }
        }
        // 要把复杂的json 字符串转换成为java 对象。需要继承TypeToken 类。
        // 并把返回的类型当成TypeToken 的泛型注入
        static class PersonType extends TypeToken<List<Person>> {
        }
        public static void main(String[] args) {
        // json 操作,一定要先new 一个gson 对象。
        Gson gson = new Gson();
        // java 对象--json
        Person person = new Person(12, "wzg168");
        // 把对象转成为json 字符串
        String personjson = gson.toJson(person);
        System.out.println(personjson);
        // 把json 字符串转换成为java 对象
        Person p = gson.fromJson(personjson, Person.class);
        System.out.println(p);
        System.out.println("------------------------------------------");
        // 2、java 对象list 集合和json 的转换
        List<Person> list = new ArrayList<Person>();
        for (int i = 0; i < 3; i++) {
        list.add(new Person(10 * i, "name-" + i));
        }
        String jsonListString = gson.toJson(list);
        System.out.println(jsonListString);
        // 把json 数组转换成为List 对象
        // List<Person> ps = gson.fromJson(jsonListString, new PersonType().getType());
        // 我们也可以使用匿名内部类
        List<Person> ps = gson.fromJson(jsonListString, new TypeToken<List<Person>>() {
        }.getType());
        System.out.println(ps);
        System.out.println("------------------------------------------");
        // 3、map 对象和json 的转换
        Map<String, Person> mapPerson = new HashMap<String, GsonTest.Person>();
        // 添加person 到map 中
        mapPerson.put("p1", new Person(1, "person-1"));
        mapPerson.put("p2", new Person(2, "person-2"));
        // 把map 转换成为json 对象
        String jsonMapString = gson.toJson(mapPerson);
        System.out.println(jsonMapString);
        // 通过使用匿名内部类的方式
        Map<String, Person> map = gson.fromJson(jsonMapString,
        new TypeToken<HashMap<String, Person>>() {}.getType());
        System.out.println(map);
        }
        }
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55
        56
        57
        58
        59
        60
        61
        62
        63
        64
        65
        66
        67
        68
        69
        70
        71
        72
        73
        74
        75
        76
        77
        78
        79
  3. readValue(json 字符串数据,Class)

  4. Java 对象转换 JSON

    1. 使用步骤:

      1. 导入 jackson 的相关 jar 包

      2. 创建 Jackson 核心对象 ObjectMapper

      3. 调用 ObjectMapper 的相关方法进行转换

        1. 转换方法:

          • writeValue(参数 1,obj): 参数 1: File:将 obj 对象转换为 JSON 字符串,并保存到指定的文件中 Writer:将 obj 对象转换为 JSON 字符串,并将 json 数据填充到字符输出流中 OutputStream:将 obj 对象转换为 JSON 字符串,并将 json 数据填充到字节输出流中
            • writeValueAsString(obj):将对象转为 json 字符串
        2. 注解:

          1. @JsonIgnore:排除属性。
          2. @JsonFormat:属性值得格式化
            • @JsonFormat(pattern = "yyyy-MM-dd")
        3. 复杂 java 对象转换

          1. List:数组
          2. Map:对象格式一致
#JavaWeb
上次更新: 2025/02/26, 08:57:57
Ajax
Cookie

← Ajax Cookie→

最近更新
01
RAIL
02-26
02
IOCTF
02-25
03
DGM
02-25
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式