Json Mapping Exception无法从START_ARRAY令牌中反序列化实例

Marcin Erbel:

我正在尝试将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<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;

....}

杰森代码:

{
    "templateId": "123",
    "parameters": [
        {
            "parameter": [
                {
                    "key": "id",
                    "value": "1",
                    "type": "STRING_TYPE"
                },
                {
                    "key": "id2",
                    "value": "12",
                    "type": "STRING_TYPE"
                }
            ]
        }
    ],
    "documentFormat": "PDF"
}
gregwhitaker:

您已声明parameters为单个对象,但是在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对象数组因此,您需要将模型更改为ParametersType对象的列表:

@JsonProperty( "parameters" )
@XmlElement( required = true )
protected List<ParametersType> parameters;

您返回一个ParametersType对象数组的事实就是为什么解析器抱怨无法从START_ARRAY中反序列化对象。它正在寻找具有单个对象的节点,但在JSON中找到了一个对象数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

反序列化JSON类实例

无法反序列化org.json.JSONObject`的`实例

将JSON转换为对象会引发JsonMappingException“无法从START_ARRAY令牌中反序列化类的实例”

com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从START_ARRAY令牌中反序列化Object的实例

无法读取JSON:无法从START_OBJECT令牌中反序列化hello.Country []实例

无法从START_ARRAY令牌中反序列化java.util.HashMap的实例

JSON解析错误:无法反序列化实例

无法从START_ARRAY令牌中反序列化com.example.million.model.Domain的实例

杰克逊错误:无法从START_ARRAY令牌中反序列化`java.lang.String`的实例

JSON解析错误:无法反序列化ArrayList的实例

无法在Spring Webservice中从START_ARRAY令牌中反序列化对象的实例

com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从START_ARRAY令牌中反序列化对象实例-JAVA

JSON解析错误:无法从START_OBJECT令牌中反序列化java.util.ArrayList实例

JSON反序列化引发异常-无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例

无法反序列化模型实例。*来自START_ARRAY令牌\ n,位于

无法从START_ARRAY令牌中反序列化java.util.LinkedHashMap的实例

如何解决错误:无效的JSON输入:无法从START_ARRAY令牌中反序列化Topic实例

Json Array无法反序列化

ObjectMapper无法反序列化-无法从START_ARRAY令牌反序列化....的实例

无法使用START_ARRAY令牌反序列化Object的实例

Java REST API:无法从START_ARRAY令牌中反序列化Object的实例

无法使用START_ARRAY令牌反序列化我的软件包的实例

无法从 START_ARRAY 令牌中反序列化 SaleListDTO 的实例

Json 无法反序列化 Spring 中的实例错误

无法从 START_ARRAY 令牌中反序列化 <Object> 的实例 - webClient

无法从 START_ARRAY 令牌反序列化 java.lang.Boolean 的实例

JSON 解析错误:无法反序列化实例 - Java

com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_ARRAY 令牌反序列化“Todo”的实例

使用 ModelMapper 反序列化 Json 時如何修復錯誤 START_ARRAY 令牌?