Я хочу, чтобы одна из переменных-членов String в моем классе модели Spring Boot Java @Entity отображалась как фактический объект JSON при отправке на клиентскую сторону - PullRequest
0 голосов
/ 29 июня 2018

Я хочу, чтобы одна из переменных-членов String в моем классе модели Spring Boot Java @Entity отображалась как фактический объект JSON при отправке на клиентскую сторону, но я не уверен, как это возможно

У меня есть класс @Entity в Spring Boot:

@Entity
@Data
public class A {

    @JsonProperty
    private String value
}

Это "значение" в классе A должно быть объектом JSON, но мне пришлось хранить его в строковом типе, иначе JPA не сохранит его в БД.

Когда контроллер возвращает этот объект модели на стороне клиента, «значение» в строке JSON будет отображаться как полная строка вместо структуры JSON.

1010 * т.е. *

Это показывает

{
  "value": "{\"another_value\":\"1234\"}"
}

вместо

{
  "value": {"another_value":"1234"}
}

Есть ли какой-нибудь простой способ аннотировать "значение" в моем классе А, чтобы это исправить?

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Вы должны предоставить пользовательский геттер для его преобразования при десериализации. Я использую Google GSON для десериализации.

@Entity
@Data
public class A {

    @JsonProperty
    private String value;

    @JsonGetter("value")
    public HashMap getValueAsJson(){
        return new Gson().fromJson(value, HashMap.class);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...