我现在可以序列化@ConfigMapping吗

Нow can i serialize @ConfigMapping

我在 Quarkus 中有一个包含 3 个文件的项目

application.properties

conf.obj[0].name=name0
conf.obj[0].code=code0
conf.obj[0].versions[0].number=1
conf.obj[1].name=name1
conf.obj[1].code=code1
conf.obj[1].versions[0].number=1
conf.obj[2].name=name2
conf.obj[2].code=code2
conf.obj[2].versions[0].number=1
conf.obj[2].versions[1].number=2

AvailableConfig.java

package com.example;

import io.quarkus.runtime.annotations.StaticInitSafe;
import io.smallrye.config.ConfigMapping;

import java.util.List;

@StaticInitSafe
@ConfigMapping(prefix = "conf")
public interface AvailableConfig {

    List<listObject> obj();

    interface listObject {

        String name();

        String code();

        List<Version> versions();

        interface Version {
            Integer number();
        }
    }
}

MainService.java

package com.example;

import io.quarkus.runtime.StartupEvent;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.json.bind.Jsonb;
import java.util.List;


@ApplicationScoped
public class MainService {

    @Inject
    AvailableConfig availableConfig;

    @Inject
    Jsonb jsonb;

    void onStart(@Observes StartupEvent ev) {

        List<AvailableConfig.listObject> config = availableConfig.obj();
        String result = jsonb.toJson(config);
    }

}

作为执行的结果,创建了正确的对象“config”。 但是序列化的时候,得到一个空的json "[{},{},{}]"

如何正确序列化这样的东西?

我不知道为什么 jsonb 会这样,但我找到了几个解决方案:

1. 使用 Gson

Gson gson = new Gson();
String resultGson = gson.toJson(config);

2. 使用杰克逊

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
String resultJackson = objectMapper.writeValueAsString(config);

但我不确定这些选项是否适用于 AOT-compilation 在 Quarkus 环境中。
3. 所以,最好的办法就是不要把这些东西放在config格式里,最好放在你的json-file.