Deserialize json в Java-объект с использованием Jackson: No String-Argument Constructor/Method Deserialization из строкоJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Deserialize json в Java-объект с использованием Jackson: No String-Argument Constructor/Method Deserialization из строко

Сообщение Anonymous »

Я дал этот сериализованный JSON в качестве строки < /p>

Код: Выделить всё

"{\"UniqueId\":[\"69570d12-598d-4aca-abe9-4d0e7b286fe5\",\"949cd142-3eca-4fd8-b8ea-b681f65c69ca\"],\"CustomerOffers\":{\"137966\":[05],\"137986\":[11],\"137987\":[38]},\"Success\":true,\"ErrorMessages\":[\"No Error\"],\"ErrorType\":\"null\"}"
< /code>
Мне нужно покинуть его в объект Java. < /p>
Я создал этот класс объекта < /p>
public class Data {

public List UniqueId;
public Map CustomerOffers;
public Boolean Success;
public List ErrorMessages;
public String ErrorType;

// Usual Getters and Setters here
}
< /code>
Затем я создал метод, чтобы захватить строку и десериализировать ее, используя com.fasterxml.jackson.databind.objectmapper < /p>
public class Deserializing {

public void processing(String input){

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

try {

// JSON string to Java object
Data data = mapper.readValue(input, Data.class); //This returns exception
System.out.println(data);

} catch (IOException e) {
e.printStackTrace();
}

}

}
< /code>
Тогда основной класс, чтобы вызвать метод. < /p>
public class Testing {

@Test
private void testing() throws ClassNotFoundException {
Deserializing deserializing = new Deserializing();
String rawData =  "\"{\\\"UniqueId\\\":[\\\"69570d12-598d-4aca-abe9-4d0e7b286fe5\\\",\\\"949cd142-3eca-4fd8-b8ea-b681f65c69ca\\\"],\\\"CustomerOffers\\\":{\\\"137966\\\":[05],\\\"137986\\\":[11],\\\"137987\\\":[38]},\\\"Success\\\":true,\\\"ErrorMessages\\\":[\\\"No Error\\\"],\\\"ErrorType\\\":\\\"null\\\"}\"";
deserializing.processing(rawData);
}

}
< /code>
После того, как я запустил его (используя testng), я получаю это сообщение об ошибке < /p>
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of 
данные

Код: Выделить всё

 (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value

Мне интересно, где я могу сделать неправильно?

Код: Выделить всё

"{\"UniqueId\":[\"69570d12-598d-4aca-abe9-4d0e7b286fe5\",\"949cd142-3eca-4fd8-b8ea-b681f65c69ca\"],\"CustomerOffers\":{\"137966\":[48],\"137986\":[48],\"137987\":[48]},\"Success\":true,\"ErrorMessages\":[\"No Error\"],\"ErrorType\":\"null\"}"< /code>

Когда я скопирую вставьте его в Intellij Editor, необходимо добавить строку Escape (IntelliJ автоматически добавляет его). Если я захватываю данные прямо из файла TXT и использую их, я просто передаю их в метод Public Void обработки (ввод строки) 
, не беспокоясь о экологичных символах. Не уверен, что это правильно, хотя ...

Подробнее здесь: https://stackoverflow.com/questions/580 ... structor-f
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»