Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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
无法反序列化my';中的START#u数组令牌外的java.util.LinkedHashMap实例;数据请求';dto_Java_Jackson_Lombok_Rest Assured - Fatal编程技术网

无法反序列化my';中的START#u数组令牌外的java.util.LinkedHashMap实例;数据请求';dto

无法反序列化my';中的START#u数组令牌外的java.util.LinkedHashMap实例;数据请求';dto,java,jackson,lombok,rest-assured,Java,Jackson,Lombok,Rest Assured,我有一个高度嵌套的api响应: { "dataRequests": [ { "status": "success", "title": "token", "values": { "limit": 1, "offset": 0,

我有一个高度嵌套的api响应:

{
"dataRequests": [
    {
        "status": "success",
        "title": "token",
        "values": {
            "limit": 1,
            "offset": 0,
            "count": 1,
            "total": 1,
            "elements": [
                {
                    "type": "DOMAIN",
                    "permission": "default",
                    "properties": [
                        {
                            "name": "property:id",
                            "value": 390
                        },
                        {
                            "name": "setting:crawler:token",
                            "value": "here's a token"
                        }
                    ],
                    "filters": []
                }
            ]
        }
    }
]
 }
我尝试使用许多包装器来解析它。因为当我想用令牌获取字段“value”时,从一个dataRequest dto返回“null”

但在编译时遇到了一个问题:

    Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize 
  instance of java.util.LinkedHashMap out of START_ARRAY token
  at [Source: {"dataRequests":[{"status":"success","title":"token","values": 
   {"limit":1,"offset":0,"count":1,"total":1,"elements": 
  [{"type":"DOMAIN","permission":"default","properties":[{"name":"property:id","value":390}, 
  {"name":"setting:crawler:token","value":"here's a token"}],"filters":[]}]}}]}; line: 1, column: 
      17] (through reference chain: com.rest.dto.ProjectTokenDto["dataRequests"])
我的DTO:

ProjectTokenDto:

@Data
@Builder
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectTokenDto {

    private Map<String, ValuesDto> dataRequests;

}
private List<DataRequestDto> dataRequests;
然后我尝试用非最佳方式解析这棵树,但我不明白如何更容易地解析它?以及上面的例外情况:

ProjectTokenDto wrapper = graphQLSteps.postProjectToken(id);

        Map<String, ValuesDto> values = wrapper.getDataRequests();

        Map<String, List<ElementsDto>> elements = new HashMap<>();

        Map<String, List<PropertiesDto>> properties = new HashMap<>();

        for (Map.Entry<String, ValuesDto> entry : values.entrySet()) {
            if (entry.getKey().equals("values")) {
                elements.put(entry.getKey(), (List<ElementsDto>) entry.getValue().getValues());
            }
        }

        for (Map.Entry<String, List<ElementsDto>> entry : elements.entrySet()) {
            if (entry.getKey().equals("elements")) {
                properties.put(entry.getKey(), (List<PropertiesDto>) entry.getValue().get(0).getElements());
            }
        }

        for (Map.Entry<String, List<PropertiesDto>> entry : properties.entrySet()) {
            if (!entry.getValue().get(0).getValue().equals(Long.toString(id))) {
                token = entry.getValue().get(0).getValue();
            }
        } 
试图手动忽略它,将JsonIgnoreProperties更改为

@JsonIgnoreProperties({"limit", "offset", "count", "total", "status", "title"})

在ValuesTo中,但最终有相同的异常

我通过更改dto的值来修复它:

ProjectTokenDto:

@Data
@Builder
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectTokenDto {

    private Map<String, ValuesDto> dataRequests;

}
private List<DataRequestDto> dataRequests;
值到:

private List<ElementsDto> elements;

dataRequests
是一个列表,而不是一个map@OneCricketeer谢谢,但是在从私有映射数据请求更改之后;私人列表数据请求;我有一个新问题。写在“更新”中你没有限制字段,所以我不确定。但是您的值dto需要一个名为elements的列表字段
private List<DataRequestDto> dataRequests;
private ValuesDto values;
private List<ElementsDto> elements;
private List<PropertiesDto> properties;
private String name;
private String value;