Json Mapping Exception can not deserialize instance out of START_ARRAY token

后端 未结 2 1227
孤街浪徒
孤街浪徒 2020-12-15 20:34

I\'m trying to parse my json request to my model. I dunno what is wrong in this code. Syntax of json looks correct and annotations on Java model also. I don\'t know why I\'m

相关标签:
2条回答
  • 2020-12-15 21:17

    You have declared parameters as a single object, but you are returning it as an array of multiple objects in your JSON document.

    Your model currently defines the parameters node as a ParametersType object:

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

    This means your model object is expecting a JSON document that looks like the following:

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

    But in your JSON document you are returning an array of ParametersType objects. So you need to change your model to be a list of ParametersType objects:

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

    The fact that you are returning an array of ParametersType objects is why the parser is complaining about not being able to deserialize an object out of START_ARRAY. It was looking for a node with a single object, but found an array of objects in your JSON.

    0 讨论(0)
  • 2020-12-15 21:39

    A couple of corrections in your pojo class ,

    1)

    public class ParametersType {

    @JsonProperty( "parameter" )
    protected List<ParameterType> parameter;
    

    ...}

    Corrected POJO:

    public class Parameters {

    @JsonProperty( "parameter" )
    protected List<Parameter> parameter;
    

    ...}

    1. Also documentFormat is a string but you have declared the type as class , protected DocumentFormatType documentFormat; Should be : protected String documentFormat;
    0 讨论(0)
提交回复
热议问题