Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Json映射异常无法反序列化START\ U数组令牌之外的实例_Java_Json_Jackson_Cxf_Jax Rs - Fatal编程技术网

Java Json映射异常无法反序列化START\ U数组令牌之外的实例

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

我正试图将我的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;

....}

您已将
参数声明为单个对象,但将其作为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;