首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectMapper类构造

ObjectMapper类构造
EN

Stack Overflow用户
提问于 2020-11-13 08:12:13
回答 1查看 135关注 0票数 0

我有大量的数据,我想让它成为java中的对象(例如https://haste.razvancode.com/agiyamuyol.json)

我正在运行这段代码:

代码语言:javascript
复制
        ObjectMapper mapper = new ObjectMapper();
        
        File f = new File("example.json");
        if (!f.exists()) f.createNewFile();

        Board board = mapper.readValue(f, Board.class);

        System.out.println(board.getName());

我得到了这个错误:

代码语言:javascript
复制
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "isTemplate" (class com.razvancode.discordbot.Utils.Board$Prefs), not marked as ignorable (21 known properties: "calendarFeedEnabled", "voting", "backgroundBottomColor", "cardAging", "backgroundImage", "background", "canBePrivate", "canBeOrg", "comments", "permissionLevel", "selfJoin", "canInvite", "invitations", "backgroundTopColor", "backgroundBrightness", "hideVotes", "cardCovers", "canBeEnterprise", "backgroundTile", "canBePublic", "backgroundImageScaled"])
 at [Source: (File); line: 35, column: 23] (through reference chain: com.razvancode.discordbot.Utils.Board["prefs"]->com.razvancode.discordbot.Utils.Board$Prefs["isTemplate"])
    at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823)
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:258)
    at com.fasterxml.jackson.databind.deser.impl.InnerClassProperty.deserializeAndSet(InnerClassProperty.java:90)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2902)
    at com.razvancode.discordbot.Test.<init>(Test.java:28)
    at com.razvancode.discordbot.Test.main(Test.java:34)

Process finished with exit code 1

我100%确定这是来自我的Board类,但我现在已经工作了几个小时,我仍然不能让它工作。

Boardclass:

代码语言:javascript
复制
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.ArrayList;

@NoArgsConstructor
@AllArgsConstructor
public class Board {

    @Getter
    private Object descData, pinned, datePluginDisable, idBoardSource, limits, templateGallery, ixUpdate, idEnterprise, idMemberCreator;
    @Getter
    private String shortUrl, dateLastActivity, shortLink, creationMethod, idOrganization, dateLastView, id, url, name, desc;
    @Getter
    private boolean subscribed, starred, enterpriseOwned, closed;
    @Getter
    private ArrayList<Memberships> memberships;
    @Getter
    private ArrayList<String> idTags, powerUps, premiumFeatures;
    @Getter
    private LabelNames labelNames;
    @Getter
    private Prefs prefs;

    @NoArgsConstructor
    @AllArgsConstructor
    public static class LabelNames {

        @Getter
        private String orange, red, sky, pink, green, blue, lime, yellow, black, purple;
    }

    @NoArgsConstructor
    @AllArgsConstructor
    public static class Prefs {

        @Getter
        private String backgroundBrightness, comments, backgroundTopColor, backgroundImage, backgroundBottomColor, voting, permissionLevel, cardAging, invitations, background;
        @Getter
        private boolean canBeEnterprise, hideVotes, canBeOrg, calendarFeedEnabled, backgroundTile, canBePublic, canBePrivate, canInvite, isTemplate, cardCovers, selfJoin;
        @Getter
        private ArrayList<BackgroundImageScaled> backgroundImageScaled;
    }

    @NoArgsConstructor
    @AllArgsConstructor
    public static class BackgroundImageScaled {

        @Getter
        private String url;
        @Getter
        private Long width, height;
    }

    @NoArgsConstructor
    @AllArgsConstructor
    public static class Memberships {

        @Getter
        private String idMember, id, memberType;
        @Getter
        private boolean unconfirmed, deactivated;
    }
}

如果你有任何关于如何修复它的想法,或者我哪里错了,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2020-11-13 08:41:08

这可能与this应答有关。您可能需要阻止lombok将getter生成为isTemplate()而不是isIsTemplate(),因为jackson将假定数据中的布尔值字段称为template。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64813696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档