Java Json映射异常无法反序列化START\ U数组令牌之外的实例
我正试图将我的json请求解析到我的模型中。我不知道,这个代码出了什么问题。json的语法看起来正确,Java模型上的注释也正确。我不知道为什么会出现这样的错误:Java Json映射异常无法反序列化START\ U数组令牌之外的实例,java,json,jackson,cxf,jax-rs,Java,Json,Jackson,Cxf,Jax Rs,我正试图将我的json请求解析到我的模型中。我不知道,这个代码出了什么问题。json的语法看起来正确,Java模型上的注释也正确。我不知道为什么会出现这样的错误: Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of ParametersType out of START_ARRAY token (through reference chain: Document[&qu
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of ParametersType out of START_ARRAY token
(through reference chain: Document["parameters"])
Java模型:
@JsonIgnoreProperties( ignoreUnknown = true )
public class Document {
@XmlElement( required = true )
@JsonProperty( "templateId" )
protected String templateId;
@JsonProperty( "parameters" )
@XmlElement( required = true )
protected ParametersType parameters;
@JsonProperty( "documentFormat" )
@XmlElement( required = true )
protected DocumentFormatType documentFormat;
...}
@JsonIgnoreProperties( ignoreUnknown = true )
public class ParametersType {
@JsonProperty( "parameter" )
protected List<ParameterType> parameter;
...}
@JsonIgnoreProperties( ignoreUnknown = true )
public class ParameterType {
@XmlElement( required = true )
@JsonProperty( "key" )
protected String key;
@XmlElement( required = true )
@JsonProperty( "value" )
@XmlSchemaType( name = "anySimpleType" )
protected Object value;
@JsonProperty( "type" )
@XmlElement( required = true, defaultValue = "STRING_TYPE" )
protected ParamType type;
....}
您已将
参数声明为单个对象,但将其作为JSON文档中多个对象的数组返回
您的模型当前将parameters节点定义为ParametersType
对象:
@JsonProperty( "parameters" )
@XmlElement( required = true )
protected ParametersType parameters;
这意味着您的模型对象需要一个如下所示的JSON文档:
{
"templateId": "123",
"parameters": {
"parameter": [
{
"key": "id",
"value": "1",
"type": "STRING_TYPE"
},
{
"key": "id2",
"value": "12",
"type": "STRING_TYPE"
}
]
},
"documentFormat": "PDF"
}
但在JSON文档中,您将返回一个参数类型的数组。因此,您需要将模型更改为ParametersType对象的列表:
@JsonProperty( "parameters" )
@XmlElement( required = true )
protected List<ParametersType> parameters;
@JsonProperty(“参数”)
@XmlElement(必需=true)
受保护列表参数;
返回一个ParametersType对象数组的事实就是解析器抱怨无法从START\u数组反序列化对象的原因。它正在查找具有单个对象的节点,但在JSON中找到了一个对象数组。在pojo类中进行了一些更正
(一)
公共类参数类型{
@JsonProperty( "parameter" )
protected List<ParameterType> parameter;
@JsonProperty(“参数”)
受保护列表参数;
…}
更正的POJO:
公共类参数{
@JsonProperty( "parameter" )
protected List<Parameter> parameter;
@JsonProperty(“参数”)
受保护列表参数;
…}
documentFormat也是一个字符串,但您已将类型声明为类,
受保护的DocumentFormatType documentFormat;
应为:受保护的字符串文档格式李>
我们在上面的代码中有参数数组。JSON注释如何理解以获取正确的值?怎么说呢?
@JsonProperty( "parameter" )
protected List<Parameter> parameter;