当前位置: 首页 > 知识库问答 >
问题:

Jackson JSON字段映射大小写?

程胡非
2023-03-14

我不清楚jackson是如何处理映射字段中的大写字母的。如果有人能帮忙,我将不胜感激。

{"user":{"username":"user@host.com","password":"pwd","sendercompid":"COMPID","service":{"host":"address","port":6666,"service":"S1","serviceAsString":"s1"}},"MDReqID":"ghost30022","NoRelatedSym":1,"Symbol":["GOOG"],"MarketDepth":"0","NoMDEntryTypes":3,"MDEntryType":["0","1","2"],"SubscriptionRequestType":"1","AggregatedBook":"N"}:

上面是我的json,下面是我的例外。。。

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "MDReqID" (class com.myco.qa.fixrest.MarketDataRequest), not marked as ignorable (10 known properties: , "mdreqID", "marketDepth", "user", "subscriptionRequestType", "aggregatedBook", "mdentryType", "symbol", "mdupdateType", "noRelatedSym", "noMDEntryTypes"])

上面是我的例外,下面是我的班级。。。

public class MarketDataRequest {
    private User user;
    private String MDReqID;
    private char SubscriptionRequestType;
    private int MarketDepth;
    private int MDUpdateType;
    private char AggregatedBook;
    private int NoMDEntryTypes;
    private ArrayList<Character> MDEntryType;
    private int NoRelatedSym;
    private ArrayList<String> Symbol;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getMDReqID() {
        return MDReqID;
    }

    public void setMDReqID(String MDReqID) {
        this.MDReqID = MDReqID;
    }

    public char getSubscriptionRequestType() {
        return SubscriptionRequestType;
    }

    public void setSubscriptionRequestType(char subscriptionRequestType) {
        SubscriptionRequestType = subscriptionRequestType;
    }

... 等等

共有3个答案

倪鸿禧
2023-03-14

在与收到的JSON字符串中的属性名称匹配的setter上添加@JsonProperty

@JsonProperty("MDReqID")
public void setMDReqID(String MDReqID) {
    this.MDReqID = MDReqID;
}

此外,添加@JsonProperty注释到getter中,以便您的输出以传统格式显示:

@JsonProperty("mDReqID")
public String getMDReqID() {
    return MDReqID;
}

现在,您可以随意命名变量:

private String mdReqID;
彭华皓
2023-03-14

你也可以

@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)

在类上大写JSON消息中的所有属性名称

纪枫
2023-03-14

由于setter方法被命名为setMDReqID(...)Jackson假设变量被命名为mDReqID,因为命名约定Java(变量应该以小写字母开头)。

如果你真的想要一个大写字母,在setter上使用@JsonProperty注释(或者-对于序列化-在getter上),如下所示:

@JsonProperty("MDReqID")
public void setMDReqID(String MDReqID) {
    this.MDReqID = MDReqID;
}
 类似资料:
  • 问题内容: 我不清楚杰克逊如何处理映射字段中的大写字母。如果有人可以帮忙,我将不胜感激。 上面是我的json,下面是我的例外… 上面是我的例外,下面是我的课… …等等 问题答案: 由于您的设置方法命名为Jackson,因此假设变量的命名是基于Java的 命名约定 (变量应以小写字母开头)。 如果您真的想要一个大写字母,请使用 setter 上的 @JsonProperty 注释(或-进行序列化-在

  • Navicat 会依源表或集合对字段类型和長度作出假设。你可以从下拉式菜单选择你所需的类型。 【提示】导入多个表或集合时,你可以从下拉式菜单选择其他表或集合。 如果你导入数据到现有的表或集合,你则需要手动映射源字段名到目标,或按住 Control 键并点按字段,然后选择“智慧匹配全部字段”、“按次序匹配全部字段”和“全部取消匹配”来进行快速匹配。 如果你透过 ODBC 导入,“条件式查询”按钮会打

  • 我与ModelMapper框架有麻烦。请解释为什么我看到以下行为。 我在build.gradle有以下依赖性 和一个类客户: 我还有一个地图绘制工具: 还有一个测试 在fred()中,方法输出是非红色的“Customer{name=fred,age=40}”(“Customer{name=null,age=40}”)。你能解释一下为什么吗?为什么我在第一个方法中看不到输出“George”?

  • 我想询问一个人,并得到以下回应: 但在需要时,我还想包含字段,并获得如下内容: 但是,我得到的只是手机ID,就像这样: 这是两个有问题的领域:

  • “”“@Data@Builder(toBuilder=true)@allargsconstuctor@noargsconstuctor public class ServiceAddress{private String addLine1;private String addLine2;private String city;private String state;private String

  • 我使用DTO和modelMapper是为了不让某些字段可见。我有一个类别实体,可以有子类别 创建类别时,我使用模型: 在此模型中,我希望parentCategoryKeyId与父对象的categoryKeyId匹配。 例如,如果我创建了一个“顶级”类别: 它返回给我: 当我这样做时: 在我的控制器中,我将其余对象传递给DTO层,该层调用服务: 我的类别是基本的POJO: 为我服务: 我的问题是,我