【问题标题】:Map json to object with multiple "" in java在java中将json映射到具有多个“”的对象
【发布时间】:2019-08-19 02:04:25
【问题描述】:

我正在尝试使用对象映射器将 json 字符串转换为对象类,但它一直返回 UnrecognizedPropertyException

这里是返回的json字符串

{"errorCode":400,"Message":"ORA-01403: 未找到数据\nORA-06512: 在 \"CSS_HPG.SELFCARE_LAY_DS_GOITRATRUOC\", 第 12 行\nORA-06512: 在第 1 行","数据":null}

这是我的课

import java.util.ArrayList;
import java.util.List;

/**
*
* @author Autumn
*/
public class PackageSearchOutput {

int errorCode;
List<String> Message;
PackageSearchOutputData Data;

public PackageSearchOutput(int errorCode, List<String> Message, 
PackageSearchOutputData Data) {
    this.errorCode = errorCode;
    this.Message = Message;
    this.Data = Data;
}


public PackageSearchOutput() {
}

public List<String> getMessage() {
    return Message;
}

public void setMessage(ArrayList<String> Message) {
    this.Message = Message;
}

public int getErrorCode() {
    return errorCode;
}

public void setErrorCode(int errorCode) {
    this.errorCode = errorCode;
}



public PackageSearchOutputData getData() {
    return Data;
}

public void setData(PackageSearchOutputData Data) {
    this.Data = Data;
}

}

这是我的映射代码

result = mapper.readValue(output.toString(), PackageSearchOutput.class);

这里是详细错误 click to see

【问题讨论】:

    标签: java json string objectmapper jsonparser


    【解决方案1】:

    UnrecognizedPropertyException 是因为 Message 不是可识别的属性。

    如果没有注释,字段的默认名称以小写开头,例如message,但您的 JSON 文本有 Message,这是一个不同的名称(因为它们区分大小写)。

    要使用非默认属性名称,请添加 @JsonProperty 注释:

    @JsonProperty("Message")
    public List<String> getMessage() {
    
    @JsonProperty("Data")
    public PackageSearchOutputData getData() {
    

    一旦你这样做了,你很可能会遇到MessageString 的问题,而你的班级将它定义为List&lt;String&gt;,所以这可能会失败。您可能需要将 Message 字段及其 getter 和 setter 从 List&lt;String&gt; 更改为 String

    【讨论】:

      猜你喜欢
      • 2014-08-03
      • 2013-04-17
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多