【问题标题】:How to use jackson to parse string convert to json in JAVA?java - 如何使用jackson解析字符串转换为JAVA中的json?
【发布时间】:2021-06-17 11:47:14
【问题描述】:

我正在尝试使用 jackson 将字符串转换为 json。

我使用了ObjectMapper().readValue() 并反序列化为一个 DragDropJsonDto 类

qList.getHeader() is like this "<p>{
 "RC" : ["N" , "Raj" , "USA"], 
"LC" : [ 
"Enter Country Name :" , 
"Enter State Name :", 
"Enter City Name :" ]
 }</p>"

公共类 DragDropJsonDto {

private List<String> RC;
private List<String> LC;

public List<String> getRC() {
    return RC;
}

public void setRC(List<String> RC) {
    this.RC = RC;
}

public List<String> getLC() {
    return LC;
}

public void setLC(List<String> LC) {
    this.LC = LC;
}

}

DragDropJsonDto dragDropJson = new ObjectMapper().readValue(qList.getHeader(), DragDropJsonDto.class);

我无法转换成 json 出现异常 Error Unrecognized field "RC" (class com.visataar.lt.web.dto.DragDropJsonDto), not marked as ignorable (2 known properties: "rc", "lc"])

【问题讨论】:

标签: java json


【解决方案1】:

jackson 默认使用小写,如果你需要RCLC 使用:

private class DragDropJsonDto {
    ...
    @JsonProperty("RC")
    private List<String> RC;
    @JsonProperty("LC")
    private List<String> LC;
    ...
}

(或在吸气剂中)

【讨论】:

    【解决方案2】:

    您可以将未知属性上的 Fail 设置为 false 以避免此问题

    ObjectMapper objectMapper = getObjectMapper();
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    

    【讨论】:

      【解决方案3】:

      由于qList.getHeader() 响应字符串对象反序列化有两个问题:

      i) 响应 JSON 字符串包含 &lt;p&gt;&lt;/p&gt;。所以你需要删除这些子字符串。如下:

      String objectJson = qList.getHeader().replace("<p>", "").replace("</p>", "");
      DragDropJsonDto f = m.readValue(objectJson, DragDropJsonDto.class);
      

      ii) JSON 字符串的键是大写字母。默认情况下,杰克逊使用小写字母,您需要在 DTO 中使用JsonProperty。如下:

        @JsonProperty("RC") 
        private List<String> RC;
        @JsonProperty("LC") 
        private List<String> LC;
      

      【讨论】:

        猜你喜欢
        • 2013-12-25
        • 2013-01-23
        • 2018-02-20
        • 1970-01-01
        • 2016-04-14
        • 1970-01-01
        • 1970-01-01
        • 2012-07-05
        • 1970-01-01
        相关资源
        最近更新 更多