为了账号安全,请及时绑定邮箱和手机立即绑定

使用索引项表示的集合生成 JSON

使用索引项表示的集合生成 JSON

白板的微信 2021-11-24 19:06:47
是否有一些库可以生成 JSON 对象,其中集合表示为一组编号项目?当使用例如 GSON 库并具有这样的类时:`class Bus {    List<Pasenger> passengers;    public Bus(List<Pasenger> passengers) {        this.passengers = passengers;    }}`GSON 像这样生成 JSON:`{"bus":{    "passengers":[    {"name":"John","familiName":"Smith"},    {"name":"Marry","familiName":"James"}    ]}}`但是我被要求生成JSON,其中集合用项目表示,每个项目都有其索引。像这样:`{"bus":{    "passengers[0]":{"name":"John","familiName":"Smith"},    "passengers[1]":{"name":"Marry","familiName":"James"}}}`我深入研究了 GSON 和 FasterXML,但找不到对此功能的支持。有谁知道是否有一些图书馆支持这个?任何帮助表示赞赏。
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我认为您可以创建 Map 而不是 List (如果您不想编写自定义序列化器和反序列化器)。Bus 的构造函数将类似于:


private Map<String, Pasenger> bus = new HashMap<>();


public Bus(List<Pasenger> passengers) {

      for (int i = 0; i < passengers.size(); i++){

           bus.put("passengers["+i+"]", passengers.get(i));

      }

}

对于只有名字的简单乘客,它看起来像


{"bus":

    {

      "passengers[0]":{"name":"first"},

      "passengers[1]":{"name":"second"}

    }

}


查看完整回答
反对 回复 2021-11-24
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您可以创建一个实现 JsonSerializer 的类来指定您希望它如何序列化。
然后在构建 Gson 时注册它: Gson gson = new GsonBuilder().registerTypeAdapter(Bus.class, new BusAdapter()).create();

更多信息:https : //github.com/google/gson/blob/master/UserGuide.md#TOC-Writing-a-Serializer


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信