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

是否有一些库可以生成 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,但找不到对此功能的支持。有谁知道是否有一些图书馆支持这个?


任何帮助表示赞赏。


白板的微信
浏览 125回答 2
2回答

慕尼黑8549860

我认为您可以创建 Map 而不是 List (如果您不想编写自定义序列化器和反序列化器)。Bus 的构造函数将类似于:private Map<String, Pasenger> bus = new HashMap<>();public Bus(List<Pasenger> passengers) {&nbsp; &nbsp; &nbsp; for (int i = 0; i < passengers.size(); i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bus.put("passengers["+i+"]", passengers.get(i));&nbsp; &nbsp; &nbsp; }}对于只有名字的简单乘客,它看起来像{"bus":&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; "passengers[0]":{"name":"first"},&nbsp; &nbsp; &nbsp; "passengers[1]":{"name":"second"}&nbsp; &nbsp; }}

qq_遁去的一_1

您可以创建一个实现 JsonSerializer 的类来指定您希望它如何序列化。然后在构建 Gson 时注册它: Gson gson = new GsonBuilder().registerTypeAdapter(Bus.class, new BusAdapter()).create();更多信息:https&nbsp;:&nbsp;//github.com/google/gson/blob/master/UserGuide.md#TOC-Writing-a-Serializer
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java