【问题标题】:Not possible to create List of inner class with jackson无法用杰克逊创建内部类列表
【发布时间】:2015-07-29 10:17:26
【问题描述】:

不能用Jackson 创建一个内部类的列表吗?外部类Tradables 将完美运行。但是内部类 Underlyings 将不起作用(当然,如果我将 Tradables 设为内部类也是如此)。

有没有办法解决这个问题,而不让每个属于 json 对象数组的类都在它自己的类中?

JsonProperty 是否高于 set 方法也没有关系。任何不属于数组的内部类也可以工作。

private String sector_group;

    @JsonProperty("underlyings")
    private List<Underlyings> listUnderlyings;
    @JsonProperty("tradables")
    private List<Tradables> listTradables;


    public class Underlyings {
        private long instrument_id;
        private String symbol;
        private String isin_code;
        public long getInstrument_id() {
            return instrument_id;
        }
        public void setInstrument_id(long instrument_id) {
            this.instrument_id = instrument_id;
        }
        public String getSymbol() {
            return symbol;
        }
        public void setSymbol(String symbol) {
            this.symbol = symbol;
        }
        public String getIsin_code() {
            return isin_code;
        }
        public void setIsin_code(String isin_code) {
            this.isin_code = isin_code;
        }

    }

映射方法

ObjectMapper mapper = new ObjectMapper();

        try {
            String json = RestLogin.getBaseResource()
                    .path("instruments").path("lookup").path("market_id_identifier").path(market_id + ":" + identifier)
                    .request(RestLogin.getResponsetype()).get(String.class);

            List<Instrument> tmpInstruments = mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, Instrument.class));

【问题讨论】:

    标签: java json jersey jackson


    【解决方案1】:

    Jackson and Inner Classes: yes, you can use, but they must be STATIC inner classes

    这是一个 sn-p(但您应该阅读整篇文章以获得更多解释)。

    如果不添加静态,生成的类对于 Jackson 以及任何其他数据绑定框架(Hibernate、JAXB)通常是无用的;经常可以序列化,但永远不能序列化成

    【讨论】:

    • 很老的文章。如果它们不是列表的一部分,我可以使用它们而不是静态的。这对 Jackson 2.6 仍然有效吗?
    • 是的,它有效:)。我将研究注释以避免静态。
    • 它只有在依赖是直接的情况下才有效,而不是通过Collection、数组或Map。但我真的建议将内部类声明为static——使用非静态内部类几乎没有什么好处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多