Json Mapping Exception无法反序列化START_ARRAY令牌中的实例
我正在尝试将我的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["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 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代码:
{ "templateId": "123", "parameters": [ { "parameter": [ { "key": "id", "value": "1", "type": "STRING_TYPE" }, { "key": "id2", "value": "12", "type": "STRING_TYPE" } ] } ], "documentFormat": "PDF" }
您已将parameters
声明为单个对象,但是您将其作为JSON文档中的多个对象的数组返回。
您的模型当前将参数节点定义为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
对象数组。 因此,您需要将模型更改为ParametersType对象的列表:
@JsonProperty( "parameters" ) @XmlElement( required = true ) protected List parameters;
您返回一个ParametersType对象数组的事实是解析器抱怨无法从START_ARRAY反序列化对象的原因。 它正在寻找具有单个对象的节点,但在JSON中找到了一个对象数组。
- 使用CXF捕获webserviceexception:NoClassDefFoundError:SOAPFaultBuilder
- 如何修改出站CXF请求的原始XML消息?
- 使用Apache CXF 2.4 JAX-RS和Spring Security 3.2获取用户名
- 如何在Eclipse中使用CXF来使用WebService
- JAXB生成JAXBElement 而不是String
- 推荐的JAX-WS框架,用于处理Moxy
- Java 7是包含JAX-WS实现还是仅包含API?
- CXF如何在没有Spring的情况下在CXF端口上设置SoapVersion
- CXF 2.7.7 org.apache.cxf.interceptor.Fault:意外的元素