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

如何在Java中使用GSON将多个对象格式化为标准JSON数组

问题:将多个Fencers对象转为标准JSON数组格式

定义的实体类

public class Fencers{
    private String name,nation;
    private int id;

    public Fencers(String name, String nation,int id) {
        this.name = name;
        this.nation = nation;
        this.id = id;
    }

    @Override
    public String toString() {
        return
                id+" "+name+" "+nation+"\n";
    }
}

现有转换代码

class Main{
    public static void main(String[] args){
        Fencers fencer1 = new Fencers("m","egy",100);
        Fencers fencer2 = new Fencers("342","egy",120);
        String json = new Gson().toJson(fencer1);
        json += new Gson().toJson(fencer2);
        System.out.println(json);
     
    }
}

当前输出(非法JSON结构)

{
  "name":"m",
  "nation":"egy",
  "id":100
}
{"name":"342",
  "nation":"egy",
  "id":120
}

期望输出(标准JSON数组)

[
 {
  "name":"m",
  "nation":"egy",
   "id":100
  },
  {
   "name":"342",
   "nation":"egy",
   "id":120
 }
]

解决方法

直接拼接两个独立的JSON对象无法生成合法的数组结构,正确的做法是将所有Fencers对象放入集合(比如List),让Gson序列化整个集合,自动生成标准JSON数组格式。

修改后的Main类代码:

import java.util.ArrayList;
import java.util.List;

class Main{
    public static void main(String[] args){
        Fencers fencer1 = new Fencers("m","egy",100);
        Fencers fencer2 = new Fencers("342","egy",120);
        
        // 将对象存入List集合
        List<Fencers> fencerList = new ArrayList<>();
        fencerList.add(fencer1);
        fencerList.add(fencer2);
        
        // 序列化整个集合
        String json = new Gson().toJson(fencerList);
        System.out.println(json);
    }
}

说明

  • Gson原生支持序列化List这类集合类型,序列化后会自动生成[]包裹的合法JSON数组。
  • 这种方式比手动拼接字符串更简洁,还能避免手动拼接可能出现的语法错误。

内容的提问来源于stack exchange,提问作者Moustafa Amr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:15:15