You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Gson解析含JSONObject的服务器返回数据?

使用Gson解析包含嵌套对象的JSON数据

针对你提供的这段JSON数据,用Gson解析其实很简单,核心就是创建和JSON结构一一对应的Java实体类,再借助Gson的核心API完成解析。下面一步步来拆解:

1. 定义Java实体类

首先要把JSON的每一层结构都映射成Java类。你的JSON里包含一个嵌套的picture对象,所以我们需要两个类(也可以用内部类来组织):

根实体类(比如命名为Product)

import com.google.gson.annotations.SerializedName;
import java.util.Date;

public class Product {
    @SerializedName("_id")
    private String id;
    
    @SerializedName("userID")
    private String userId;
    
    private String name;
    private int price;
    private String description;
    
    @SerializedName("__v")
    private int version;
    
    @SerializedName("boardVisibility")
    private String boardVisibility;
    
    private Date date; // 若想直接解析成Date类型,需额外配置Gson
    // 也可以用String date; 直接存储日期字符串
    
    private Picture picture;

    // 记得生成getter、setter方法,或者用Lombok注解简化代码
}

嵌套的Picture类

可以是单独的类,也可以作为Product的内部静态类:

public class Picture {
    private String url;
    private String name;

    // 同样需要添加getter、setter方法
}

注意:JSON里的字段名和Java变量名不一致的(比如_id、__v),要用@SerializedName注解做映射,Gson会自动识别对应关系。

2. 执行解析操作

有了实体类之后,就可以用Gson的fromJson()方法直接解析了:

基础解析代码

import com.google.gson.Gson;

public class JsonParserDemo {
    public static void main(String[] args) {
        // 假设这是你从服务器拿到的JSON字符串
        String jsonStr = "{\"_id\":\"5a78263eab294307bebc2e6b\",\"userID\":\"PvIMsjink1UcrwXZ4gb899W5Kxo2\",\"name\":\"battery\",\"price\":22,\"description\":\"t\",\"__v\":0,\"boardVisibility\":\"MainBoard\",\"date\":\"2018-02-05T09:39:10.597Z\",\"picture\":{\"url\":\"https://firebasestorage.googleapis.com/v0/b/bitbuy-bitbuy.appspot.com/o/user%2FPvIMsjink1UcrwXZ4gb899W5Kxo2%2FDepositphotos_59984669_s-2015.jpg?alt=media&token=a562fd6d-98ff-4fb8-ad93-c251a5016b0d\",\"name\":\"Depo...\"}}";

        // 创建Gson实例
        Gson gson = new Gson();
        // 解析成Product对象
        Product product = gson.fromJson(jsonStr, Product.class);

        // 现在就能通过product对象获取所有字段了
        System.out.println("商品名称:" + product.getName());
        System.out.println("图片URL:" + product.getPicture().getUrl());
    }
}

日期字段的额外配置

如果希望把date字段直接解析成java.util.Date类型(而非字符串),需要给Gson配置日期格式化器:

import com.google.gson.GsonBuilder;
import java.text.SimpleDateFormat;

// 创建带日期格式的Gson实例
Gson gson = new GsonBuilder()
        .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
        .create();

这样解析出来的product.getDate()就是一个标准的Date对象了。

3. 依赖说明

别忘了在项目里引入Gson依赖:

  • Maven(在pom.xml中添加):
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 使用最新稳定版即可 -->
</dependency>
  • Gradle(在build.gradle中添加):
implementation 'com.google.code.gson:gson:2.10.1'

内容的提问来源于stack exchange,提问作者Igor F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:21:02