Невозможно экземпляр конструкции com.response.dto.RootDTO (хотя существует по крайней мере один создатель): нет конструктора/фабричного метода строкового аргумента для десериализации из строкового значения («Мета»)
в [Источник: ( String)""Meta":[{"DimensionName":"Version","DimensionId":"3b4860b9-b215-4192-bd7a-a76f377fc465","DimensionType":"Regular","Alias":"C0"," AttributeId":"211d5-d91f-40ec-9668-20e0da2ae7b3","AttributeName":"Имя версии","AttributeKey":"VersionKey"; строка: 1, столбец: 1]
Вот как выглядит моя строка JSON (но с escape-символами в eclipse):
{"Meta":[{"DimensionName":"Version", "DimensionId":"3b4860b9 -b215-4192-bd7a-a76f377fc465, "DimensionType":"Regular","Alias":"C0","AttributeId":"211b33d5-d91f-40ec-9668-20e0da2ae7b3","AttributeName":"Имя версии", "AttributeKey":"VersionKey"}]}.
Вот класс, в который я хочу его десериализовать:
Код: Выделить всё
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class RootDTO
{
@JsonProperty("Meta")
private List Meta;
}
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class MetaDTO
{
@JsonProperty("DimensionName")
private String DimensionName;
@JsonProperty("AttributeId")
private String AttributeId;
@JsonProperty("AttributeName")
private String AttributeName;
@JsonProperty("Name")
private String Name;
@JsonProperty("Alias")
private String Alias;
}
Код: Выделить всё
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.readValue(jsonFormattedString, RootDTO.class));
Изменить: оказывается, строка, которая была передана в ObjectMapper, неверная. Вот такая строка кода
Код: Выделить всё
String jsonFormattedString = responseEntity.getBody().substring(1, responseEntity.getBody().lastIndexOf("\"")).replaceAll("\\\\", "");
Подробнее здесь: https://stackoverflow.com/questions/683 ... ory-method