Я использую jackson 2.9.6
У меня есть объект, который я хочу сериализовать и десериализовать. Вот класс Post
Post.java
public class Post extends GenericJson {
private Long id;
private String name;
private int count;
private List<Comment> commentList;
// Getter and setter
}
public class Comment extends GenericJson{
private Long id;
private String text;
private int count;
// Getter and setter
}
Данные JSON
{
"id" : 123,
"name" : "azeem",
"count" : 1,
"commentList" : [
{
"id" : 312,
"text" : "simple comment",
"count" : 3
},
{
"id" : 31221231231231,
"text" : "simple comment 2",
"count" : 1
}
]
},
"id" : 123127877186786,
"name" : "arfan",
"count" : 5,
"commentList" : [
{
"id" : 312,
"text" : "simple comment",
"count" : 3
},
{
"id" : 31221231231231,
"text" : "simple comment 2",
"count" : 1
}
]
}
Я использую ObjectMapper
для чтения и записи, вот так.
Для записи
objectMapper.writeValue(fileDir, postObject);
Для чтения
objectMapper.readValue(savedFileDir, Post.class); // Error can't cast int to long
Как вы можете видеть, есть ошибка can't cast int to long post['id'] и то же самое в commentList
, потому что в Json Data первым id
является 123 Итак, jackson
считайте его int
и попытайтесь сохранить на Long id
Я вижу ответ на StackOverFlow, в котором используется DeserializationFeature.USE_LONG_FOR_INTS
, но я не могу его использовать, потому что есть другое свойство count
, которое мне нужно в int
.
Если я использую DeserializationFeature.USE_LONG_FOR_INTS
, это показывает мне ошибку, что Long не может привести к int post['count'] и то же, что и commentList
Я хочу спросить, есть ли способ преобразовать определенное свойство в определенный примитивный тип. Например, в этом я хочу, чтобы свойство id
всегда было в Long
как в Post
, так и в Comment
. В остальном все свойства в порядке.
Не могли бы вы сообщить мне, как я могу это сделать.
Обновить
Классы Post
и Comment
генерируются автоматически и не могут вносить какие-либо изменения в эти файлы. На самом деле я использую конечные точки облака Google v2, эти файлы создаются конечными точками облака. Облачные конечные точки используют одну и ту же библиотеку jackson
для преобразования данных json в этот объект класса, но я не знаю, делают ли они это.
id
быть типом оболочки? Можете ли вы изменить его на примитивlong
? - person ernest_k   schedule 31.07.2018