JSON

112 阅读2分钟

日期:2021年12月13日

出处:黑马程序员JavaWeb全套教程,Java Web从基础到项目实战(IDEA版)

www.bilibili.com/video/BV1qv…

正文


JSON

JavaScript Object Notation<==>JacaScript对象表示法

是一种数据格式

JSON现在多用于 存储和交换文本信息的语法 进行数据传输 类似于xml

JSON基本语法

注意:

一、索引越界

二、在遍历时想把键值对都输出只能用 [ ]的方式

for (var key in one) {

//alert(key+":"+one.key); ❌

alert(key+":"+one[key]); ✔

}

<script>
    //基本格式
    var one = {"name":"张三",'age':22,address:"jh"}
    // alert(one);
    var name1 = one.name;
    var name2 = one["name"];
    // alert(name1);
    // alert(name2);
    for (var key in one) {
        // alert(key+":"+one.key);
        alert(key+":"+one[key]);
    }

    // 嵌套格式:[{},{},{},....]
    var two = [{"name": "zhangsan","age":23,"gender":true},
                {"name": "lisi","age":25,"gender":false}];
    // alert(two);
    var name3 = two[1].name;
    // alert(name3);

    //嵌套格式:{**:[...]
    var three = {"persons":[{"name": "zhangsan","age":23,"gender":true},
                            {"name": "lisi","age":25,"gender":false}
        ]
    };
    // alert(three);
    var name4 = three.persons[1].name;
    // alert(name4);

</script>

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

JSON解析器

  1. Java对象转换JSON

注意:

注解

复杂java对象的转换

package JSON;

import com.fasterxml.jackson.core.JsonProcessingException;
import org.junit.Test;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.FileWriter;
import java.util.*;

// TODO: 2021/12/13 Java对啊ing转为JSON字符串
public class JSON_Demo1 {
    @Test
    public void test1() throws Exception {
//        1.创建Person对象
        Person p = new Person();
        p.setName("张三");
        p.setAge(25);
        p.setGender("男");
//        2.创建Jackson的核心对象, ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
//        3.转换
        String json = mapper.writeValueAsString(p);//将对象转为json字符串
        System.out.println(json);

//        mapper.writeValue(new File("D://json_test1.txt"),p);//将数据写到D://json_test1.txt

        mapper.writeValue(new FileWriter("D://json_text2.txt"),p);//一流的形式将数据关联到D://json_test2.txt

    }
    @Test
    public void test2() throws Exception {

        Person p = new Person();
        p.setName("张三");
        p.setAge(25);
        p.setGender("男");
        p.setBirthday(new Date());

        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(p);
        System.out.println(json);
    }
    @Test
    public void test3() throws Exception {

        Person p1 = new Person();
        p1.setName("张三");
        p1.setAge(25);
        p1.setGender("男");
        p1.setBirthday(new Date());

        Person p2 = new Person();
        p2.setName("张三");
        p2.setAge(25);
        p2.setGender("男");
        p2.setBirthday(new Date());

        Person p3 = new Person();
        p3.setName("张三");
        p3.setAge(25);
        p3.setGender("男");
        p3.setBirthday(new Date());

        //创建List集合
        List<Person> ps = new ArrayList<>();
        ps.add(p1);
        ps.add(p2);
        ps.add(p3);

        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(ps);
        System.out.println(json);
    }
    @Test
    public void test4() throws Exception {
//        1.创建Person对象
        Map<String,Object> map = new HashMap<>();
        map.put("name","zhuangsan");
        map.put("age",26);
        map.put("gender","男");

        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(map);
        System.out.println(json);
    }
}
  1. JSON转换Java对象(了解)

和Java转JSON大同小异并且不怎么常用这里就不再演示了

方法:readValue(JSON字符串数据,Class类型)

总结


这段知识的重点是JSON中Java对象转换JSON的书写格式,其中需要注意的也都在正文中标注了。