如何在JSON-B的JSON表示中包含Java枚举的字段?

如何在JSON-B的JSON表示中包含Java枚举的字段?,java,json,jsonb-api,Java,Json,Jsonb Api,假设我有以下Java枚举: @AllArgsConstructor public enum Code { Code1("Short text 1", "Long text 1"), Code2("Short text 2", "Long text 2"); private final String shorttext; private final String longtext; }

假设我有以下Java枚举:

@AllArgsConstructor
public enum Code {
    Code1("Short text 1", "Long text 1"),
    Code2("Short text 2", "Long text 2");

    private final String shorttext;
    private final String longtext;
}
然后,
System.out.println(JsonbBuilder.create().toJson(code.Code1))
将产生
“Code1”
。我希望得到以下结果:

{
  "shorttext": "Short text 1",
  "longtext": "Long text 1"
}
是否有一种舒适的方法来实现这一点?也许我可以使用任何注释?或者是强制实现自定义适配器


顺便说一句:
org.json.JSONObject
默认情况下会生成所需的格式。

您可以使用
Map
执行此操作,如下所示:

Map<String, String> textMap = new HashMap<>();
textMap.put("longtext", Code.Code1.getLongtext());
textMap.put("shorttext", Code.Code1.getShorttext());
System.out.println(JsonbBuilder.create().toJson(textMap));
Map textMap=newhashmap();
put(“longtext”,Code.Code1.getLongtext());
textMap.put(“shorttext”,Code.Code1.getShorttext());
System.out.println(JsonbBuilder.create().toJson(textMap));
输出:
{“长文本”:“长文本1”,“短文本”:“短文本1”}


此外,您还需要将
@Getter
添加到
代码枚举中

我对JSON-B不是很熟悉,但您似乎需要编写一个序列化程序,如下所述:

它可能类似于给定的
客户
示例。类似于:

public static class CodeSerializer implements JsonbSerializer<Code> {
    @Override
    public void serialize(Code code, JsonGenerator generator, SerializationContext ctx) {
        generator.writeStartObject();
        generator.write("shorttext", code.getShorttext());
        generator.write("longtext", code.getLongtext());
        generator.writeEnd();
    }
}