在Java中将json映射到具有多个“”的对象

时间:2019-08-19 02:04:25

标签: java json string objectmapper jsonparser

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

这是返回json字符串

  

{“错误代码”:400,“消息”:“ 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

1 个答案:

答案 0 :(得分:0)

UnrecognizedPropertyException是因为Message不是公认的属性。

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

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

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

一旦这样做,很可能会遇到MessageString的问题,而您的班级将其定义为List<String>,这样可能会失败。您可能需要将Message字段及其获取和设置器从List<String>更改为String