Нет конструктора / метода с одинарным внутренним аргументом
У меня есть этот код:
final Person p = new Person(1L);
final ObjectMapper mapper = JacksonUtil.INSTANCE.getMapper();
final TypeReference<HashMap<String, Object>> typeMap = new TypeReference<HashMap<String, Object>>() {};
final String personJson= mapper.writeValueAsString(p);
mapper.readValue(personJson, typeMap);
personJson
как:
"id" : 1
Всякий раз, когда у меня есть Long type
в моем Json это не работает, когда я пытаюсь это прочитать. У меня есть эта ошибка:
com.fasterxml.jackson.databind.JsonMappingException: невозможно создать экземпляр значения типа [простой тип, класс org.codehaus.jackson.generated.java.lang.Number] из целого числа; нет конструктора / метода с одинарным внутренним аргументом
Как я могу заставить его принять тип Long
? Есть ли какая-либо функция для включения в маппере?
1 ответ
Создайте конструктор в Person, который принимает целое число (и не длинное, как вы). Если вы определенно хотите принять long, попробуйте создать конструктор, который принимает Number.
Создайте конструктор в Person, который принимает целое число (и не так долго, как вы). Если вы определенно хотите принять long, попробуйте создать конструктор, принимающий Number. Предположим, у вас есть такой класс bean/model
public class Person{
private Long id;
private String name;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(Long id) {
super();
this.id = id;
}
//getter and setter
}
Здесь второй конструктор принимает значение Long
Я надеюсь что твой
нет конструктора / фабричного метода single-int-arg
ошибка исчезнет