3. 逻辑值(true 或 false)
4. 数组(在方括号中) {"persons":[{},{}]}
5. 对象(在花括号中) {"address":{"province":"陕西"....}}
6. null
* 数据由逗号分隔:多个键值对由逗号分隔
* 花括号保存对象:使用{}定义json 格式
* 方括号保存数组:[]
  • 获取数据:   1. json对象.键名   2. json对象["键名"]   3. 数组对象[索引]   4. 遍历
  • JSON数据和Java对象的相互转换
    * JSON解析器
    常见的解析器:Jsonlib,Gson,fastjson,jackson
  • 四、解析方式

    1. Gson
    Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。
    String json = new Gson().toJSON(要转换的对象);
    Book book = new Gson().fromJson(json, Book.class);

     public static void main(String[] args) {
            //1.创建GSON对象
            Gson gson = new Gson();
            //2. 拿到java对象
            Student student = new Student("张三", 18, "热爱学习!");
            //3. 调用Gson的toJson方法
            String s = gson.toJson(student);
            System.out.println(s);
    
     public static void main(String[] args) {
            //1. 定义json字符串 {"name":"李白","age":21,"info":"伟大的诗人"}
            String json = "{\"name\":\"李白\",\"age\":21,\"info\":\"伟大的诗人\"}";
            //2. 创建Gson对象
            Gson gson = new Gson();
            //3. 调用fromJson方法
            Student student = gson.fromJson(json, Student.class);
            System.out.println(student);
    

    2. FastJson
       FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
          String json=JSON.toJSONString(要转换的对象);
          Book book = JSON.parseObject(json, Book.class);

     public static void main(String[] args) {
            //1. 对象
            Student student = new Student("赵四", 33, "高效全能选手!");
            //2. 调用JSON的静态方法 toJSONXxx()
            String s = JSON.toJSONString(student);
            System.out.println(s);
    
        public static void main(String[] args) {
            //{"age":33,"info":"高效全能选手!","name":"赵四"}
            //1. 定义json字符串
            String str = "{\"age\":33,\"info\":\"高效全能选手!\",\"name\":\"赵四\"}";
            //2. 调用JSON的parseObject
            Student student = JSON.parseObject(str, Student.class);
            System.out.println(student);
            //json转其他类型
            List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
            System.out.println(strings.get(1));
    

    3. Jackson
      Jackson是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架
      writeValueAsString(obj):将对象转为json字符串
      writeValue(参数1,obj)

    File:将obj对象转换为JSON字符串,并保存到指定的文件中 Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中 OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流

      readValue(str,类名.class):字符串转对象
        1. @JsonIgnore:排除属性。
        2. @JsonFormat:属性值得格式化
          @JsonFormat(pattern = "yyyy-MM-dd")
          1. 导入jackson的相关jar包(注意三个包)
              jackson-core-2.2.3.jar:jackson的核心包
              jackson-databind-2.2.3.jar:数据映射的包,即ObjectMapper就在这个包
              jackson-annotations-2.2.3.jar:jsckson的注解包
          2. 创建Jackson核心对象 ObjectMapper
          3. 调用ObjectMapper的相关方法进行转换

    public static void main(String[] args) throws JsonProcessingException {
            //1. 导入jackson的相关jar包
            //2. 创建Jackson核心对象 ObjectMapper
            ObjectMapper mapper = new ObjectMapper();
            Student student = new Student("老樊", 24, "优秀唱作人");
            //3. 调用ObjectMapper的相关方法进行转换--writeValueAsString
            String s = mapper.writeValueAsString(student);
            System.out.println(s);
    
        public static void main(String[] args) throws IOException {
            //1.创建ObjectMapper对象
            ObjectMapper mapper = new ObjectMapper();
            //2. json字符串
            String str = "{\"name\":\"老樊\",\"age\":24,\"info\":\"优秀唱作人\"}";
            //3. 调用ObjectMapper的相关方法进行转换-- readValue
            Student student = mapper.readValue(str, Student.class);
            System.out.println(student);
    复制代码
  • 私信