Articles of jackson

Преобразование строки JSON в экземпляр класса данных в Spring

В функции контроллера я получаю JSON через @RequestBody качестве data class . Я хочу сохранить data class как строку, а затем вернуть его обратно в data class . Как я могу достичь этого?

Как предотвратить Джексона от (де) сериализации определенных свойств?

Для любого класса Kotlin один метод генерируется для каждого открытого свойства в формате componentX() , поэтому этот класс: public data class Dog(public var name: String, public var age: Double) Является эквивалентом чего-то подобного в Java: public class Dog { private String name; private double age; public Dog(@NotNull String name, @NotNull double age) { // assign […]

Пользовательский KeyDeserializer

У меня есть прецедент, где мне нужен специальный KeyDeserializer . Следующие работы, но чувствую себя не так (это Kotlin, но должны быть хорошо читаемы для Java-людей): class KeepMapKeyDeserializer : KeyDeserializer() { // In reality this is a single executable-wide instance val mapper = ObjectMapper() override fun deserializeKey(key: String, ctxt: DeserializationContext): ColumnId<*> { return mapper.readValue(key, ColumnId::class.java) […]

Пользовательский десериализатор для любого списка в Джексоне

У меня проблема с неправильными объектами в списках. Например, у меня есть модель JSON: { "items": [ { "id": 1, "name": "Item1" }, { "id": 2, "name": "Item2" }, { "id": [], "name": "Item3" } ] } и два POJO data class BadList(val items: List<BadItem>) data class BadItem(val id: Int, val name: String) Конечно, когда […]

Как вы объявляете полиморфное поле, которое использует JsonTypeInfo.As.WRAPPER_OBJECT с Jackson XML?

Я получаю XML-сообщения в приложении для Android, написанном в Котлине, и я пытаюсь понять, как использовать полиморфную десериализацию Джексона, когда она не является корневым узлом. Вот упрощенный пример. Скажем, я получаю 2 типа сообщений (сообщение «данные» и сообщение «текст»): <MSG> <TT> <id>3</id> <text>hi</text> </TT> </MSG> <MSG> <DT> <id>4</id> <data>93328afd0</data> </DT> </MSG> Сообщения отличаются своим оберточным […]

kotlin map based properties и Jackson не работают – делегируйте точки на другую карту, чтобы свойство карты

Я пытался привести некоторую структуру к нашей текущей модели, используя делегированные свойства, и я нашел это странное поведение Для простоты можно сказать, что у нас есть этот класс: class Test{ val data:MutableMap<String,Any> = mutableMapOf() var classProp:String by data } и эту строку "{\"data\":{\"classProp\":\"propValue\"}}" Использование jackson mapper в отладке (с или без модуля kotlin и отражения […]

Почему Kotlin с Spring MVC JSON возвращает пустой объект?

Я играл с серверной стороной Kotlin, Spring MVC и Jackson. Я создал простое приложение, использующее http://start.spring.io/ , но я, возможно, допустил ошибку в аннотации JsonView . Эта: @RestController class MyRestController { @RequestMapping("/user") @JsonView(User::class) fun getUser() : User = User("Fred",50) } data class User(val name: String, val age: Int) … при вызове с завитом ph@sleek ~ […]

Невозможно разобрать json, используя Jackson в Kotlin

У меня есть следующий json, возвращаемый с сервера {"s":2,"v":[[{"g":"value"},{"s":"value"},{"t":"value"}],[{"g":"value"},{"s":"value"},{"t":"value"}]]} Я получаю сообщение об ошибке, чтобы понять, как мне строить классы? Теперь у меня есть: companion object { class ResponseDataModel { @JsonProperty("s", required = true) var s: Int = 0 @JsonProperty("v", required = true) lateinit var v: Array<SubjectsValueResponseDataModel> } class ValueResponseDataModel { @JsonProperty("s", required = true) […]

Момент не может быть сериализован в соответствующий формат даже с помощью jackson-datatype-jsr310

Добавление следующих зависимостей: compile("com.fasterxml.jackson.module:jackson-module-parameter-names:2.8.9") compile("com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.8.9") compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.8.9") Теперь я могу десериализовать следующий JSON с помощью Instant: { "timestamp": {{$timestamp}} } к следующему объекту: Transaction(timestamp=2017-07-02T10:58:18Z) со следующим объявлением класса data class Transaction(@NotNull val timestamp: Instant) Однако, сразу после сериализации, я получаю следующее: { "timestamp": 1498992172 } Я использую Spring Boot с Kotlin .

Могу ли я передать информацию о типе, чтобы упростить это?

У меня много таких кодов, это все равно, кроме типа PositionJson , это может быть AnotherJson или FooJson или BarJson Есть ли какой-то способ, который я могу исключить весь этот код в одну функцию, чтобы как-то передать в нее тип? Так что у меня нет нескольких из этих больших блоков почти одинакового кода, замусоривающих мой […]