Java解析JSON的两种方式

本文介绍了Java中两种常用的JSON解析库——Gson和FastJson的使用方法。主要内容包括如何用Gson和FastJson将对象转换为JSON字符串,从JSON字符串还原对象,以及处理JSON数组格式的数据。

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

JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.

Gson:是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

FastJson: 是阿里巴巴提供的一个性能很好的 Java 语言实现的 JSON 解析器和生成器。

import java.util.Objects;

public class MagicPhone {
    private String brand;
    private String name;
    private String info;
    private String model;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getName() {
        return name;
    }

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

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public MagicPhone() {
    }

    public MagicPhone(String brand, String name, String info, String model) {
        this.brand = brand;
        this.name = name;
        this.info = info;
        this.model = model;
    }

    @Override
    public String toString() {
        return "MagicPhone{" +
                "brand='" + brand + '\'' +
                ", name='" + name + '\'' +
                ", info='" + info + '\'' +
                ", model='" + model + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MagicPhone that = (MagicPhone) o;
        return Objects.equals(brand, that.brand) &&
                Objects.equals(name, that.name) &&
                Objects.equals(info, that.info) &&
                Objects.equals(model, that.model);
    }

    @Override
    public int hashCode() {
        return Objects.hash(brand, name, info, model);
    }
}

一、Gson

1.将对象转换为JSON字符串

import com.google.gson.Gson;

/**
 * 用Gson将对象转换为JSON字符串
 */
public class Demo1 {
    public static void main(String[] args) {
        //  创建Gson对象
        Gson g = new Gson();
        //  转换
        MagicPhone magicPhone = new MagicPhone("华人牌2060款","傻妞","一部来自2060年的手机","喜,怒,哀,乐,羞,乖,酷,坏,愁,傻");
        String s = g.toJson(magicPhone,MagicPhone.class);
        System.out.println(s);
    }
}

结果:

{"brand":"华人牌2060款","name":"傻妞","info":"一部来自2060年的手机","model":"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻"}

Process finished with exit code 0

2.将JSON字符串转换为对象

import com.google.gson.Gson;

/**
 * 用Gson将JSON字符串转换为对象
 */
public class Demo2 {
    public static void main(String[] args) {
        //  创建Gson对象
        Gson g = new Gson();
        //  转换  {"brand":"华人牌2060款","name":"傻妞","info":"一部来自2060年的手机","model":"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻"}
        String s = "{\"brand\":\"华人牌2060款\",\"name\":\"傻妞\",\"info\":\"一部来自2060年的手机\",\"model\":\"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻\"}";
        MagicPhone magicPhone = g.fromJson(s,MagicPhone.class);
        System.out.println(magicPhone);
        System.out.println(magicPhone.getModel());
    }
}

结果:
 

MagicPhone{brand='华人牌2060款', name='傻妞', info='一部来自2060年的手机', model='喜,怒,哀,乐,羞,乖,酷,坏,愁,傻'}
喜,怒,哀,乐,羞,乖,酷,坏,愁,傻

Process finished with exit code 0

3.将JSON数组格式转换为对象

import com.google.gson.Gson;

import java.util.HashMap;
import java.util.List;

/**
 * 将JSON数组格式转换为对象
 */
public class Demo3 {
    public static void main(String[] args) {
        //  创建Gson对象
        Gson g = new Gson();
        //  转换  {"brand":"华人牌2060款","name":"傻妞","info":"一部来自2060年的手机","model":["喜","怒","哀","乐","羞","乖","酷","坏","愁","傻"]}
        String s = "{\"brand\":\"华人牌2060款\",\"name\":\"傻妞\",\"info\":\"一部来自2060年的手机\",\"model\":[\"喜\",\"怒\",\"哀\",\"乐\",\"羞\",\"乖\",\"酷\",\"坏\",\"愁\",\"傻\"]}";
        HashMap data = g.fromJson(s,HashMap.class);
        List list = (List) data.get("model");
        System.out.println(list);
        System.out.println(list.get(2));
        System.out.println(list.getClass());
    }
}

结果:

[喜, 怒, 哀, 乐, 羞, 乖, 酷, 坏, 愁, 傻]
哀
class java.util.ArrayList

Process finished with exit code 0

二、FastJson

1.将对象转换为JSON字符串

将JSON字符串转换为对象

import com.alibaba.fastjson.JSON;

/**
 * 用fastJson将对象转换为JSON字符串
 * 将JSON字符串转换为对象
 */
public class Demo4 {
    public static void main(String[] args) {
        //将对象转换为JSON字符串
        MagicPhone magicPhone = new MagicPhone("华人牌2060款","傻妞","一部来自2060年的手机","喜,怒,哀,乐,羞,乖,酷,坏,愁,傻");
        String s = JSON.toJSONString(magicPhone);
        System.out.println(s);
        System.out.println("-------------------------------------------------------------");
        //将JSON字符串转换为对象
        String json = "{\"brand\":\"华人牌2060款\",\"name\":\"傻妞\",\"info\":\"一部来自2060年的手机\",\"model\":\"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻\"}";
        MagicPhone m = JSON.parseObject(json,MagicPhone.class);
        System.out.println(m);
        System.out.println(m.getModel());
    }
}

结果:

{"brand":"华人牌2060款","info":"一部来自2060年的手机","model":"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻","name":"傻妞"}
-------------------------------------------------------------
MagicPhone{brand='华人牌2060款', name='傻妞', info='一部来自2060年的手机', model='喜,怒,哀,乐,羞,乖,酷,坏,愁,傻'}
喜,怒,哀,乐,羞,乖,酷,坏,愁,傻

Process finished with exit code 0

2.将JSON数组格式转换为对象

import com.alibaba.fastjson.JSON;

import java.util.List;

/**
 * 用fastJson将JSON数组格式转换为对象
 */
public class Demo5 {
    public static void main(String[] args) {
        //转换    ["喜","怒","哀","乐","羞","乖","酷","坏","愁","傻"]
        String s = "[\"喜\",\"怒\",\"哀\",\"乐\",\"羞\",\"乖\",\"酷\",\"坏\",\"愁\",\"傻\"]";
        List<String> data = JSON.parseArray(s,String.class);
        System.out.println(data);
        System.out.println(data.get(2));
    }
}

结果:

[喜, 怒, 哀, 乐, 羞, 乖, 酷, 坏, 愁, 傻]
哀

Process finished with exit code 0

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴帅345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值