如何在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
相关产品推荐
相关产品推荐

