json解析

本文介绍了JSON的基本概念,作为数据交换的轻量级格式,其独立于编程语言。接着详细讲解了JSON的语法规则,包括对象和数组的表示。文章重点讨论了在Java中解析JSON的两种常用库——Gson和FastJson。对于Gson,展示了如何将Java对象转换为JSON字符串以及反向将JSON解析回Java对象。对于FastJson,同样演示了对象到JSON和JSON到对象的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、json简介

json:javascript object Notation js对象简谱,是一种轻量级数据交换格式(客户端与服务器,程序与程序之间数据交换的一种格式)

独立于编程语言,用文本表示数据

2、JSON 语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象
  • 在json格式中数组与对象可以相互嵌套

示例
在这里插入图片描述

3、JSON 解析

json最常用的两种解析方式

  • Gson(谷歌)
  • FastJson(阿里)

3.1 Gson

1、将Java对象转换成json示例

(1)、首先要导入jar包
(2)、在需要转换JSON字符串的位置编写如下代码即可:

String json = new Gson().toJSON(要转换的对象); 

示例
Demo1类

package com.kaikeba.json;

import com.google.gson.Gson;

/**
 * Gson:将Java对象转成json
 */
public class Demo1 {
    public static void main(String[] args) {
        //1、创建Gson对象
        Gson gs =new Gson();
        //2、转换
        Book book = new Book("100","财富自由","18");
        //将java对象转换成json
        String json = gs.toJson(book);
        System.out.println(json);

    }
}

运行结果

{"id":"100","name":"财富自由","age":"18"}

Book类

package com.kaikeba.json;

import java.util.Objects;

public class Book {
    private String id;
    private String name;
    private String age;

    public Book() {
    }

    public Book(String id, String name, String age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Book book = (Book) o;
        return Objects.equals(id, book.id) &&
                Objects.equals(name, book.name) &&
                Objects.equals(age, book.age);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, age);
    }

    @Override
    public String toString() {
        return "Book{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

2、将json转换Java对象
(1)、之前导过jar就不必再导入了
(2)、在需要转换Java对象的位置, 编写如下代码:

对象 = new Gson().fromJson(JSON字符串,对象类型.class); 

示例

package com.kaikeba.json;

import com.google.gson.Gson;

/**
 * Gson:将json转换Java对象
 */
public class Demo2 {
    public static void main(String[] args) {
        //1、创建Gson对象
        Gson gs =new Gson();
        //2、转换成Java对象
        Book b = gs.fromJson("{\"id\":\"100\",\"name\":\"财富自由\",\"age\":\"18\"}",Book.class);
        System.out.println(b.getId());
    }
}

运行结果

100

3.2FastJson

1、将Java对象转换为json
(1)、导入fastjson.jar包
(2)、在需要转换JSON字符串的位置编写如下代码即可:

String json=JSON.toJSONString(要转换的对象); 

代码示例

package com.kaikeba.json;

import com.alibaba.fastjson.JSON;

/**
 * FastJson方式转换:将Java对象转换为json
 */
public class Demo4 {
    public static void main(String[] args) {
        Book book = new Book("001","床前明月光,疑是地上霜","22");
        //1、转换
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }
}

运行结果

{"age":"22","id":"001","name":"床前明月光,疑是地上霜"}

2、将json转换为java对象
(1)导入fastjson.jar包
(2)在需要转换Java对象的位置, 编写如下代码:

类型 对象名=JSON.parseObject(JSON字符串, 类型.class); 

示例代码

package com.kaikeba.json;

import com.alibaba.fastjson.JSON;

/**
 * FastJson方式转换:将json转换为Java的字符串
 */
public class Demo5 {
    public static void main(String[] args) {
        //1、转换  将{"age":"22","id":"001","name":"床前明月光,疑是地上霜"}转换为字符串
        Book book = JSON.parseObject("{\"age\":\"22\",\"id\":\"001\",\"name\":\"床前明月光,疑是地上霜\"}",Book.class);
        System.out.println(book.getId());
    }
}

运行结果

001
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值