我希望 Spring Boot Java @Entity 模型类中的 String 成员变量之一在发送到客户端时显示为实际的 JSON 对象
Posted
技术标签:
【中文标题】我希望 Spring Boot Java @Entity 模型类中的 String 成员变量之一在发送到客户端时显示为实际的 JSON 对象【英文标题】:I want one of the String member variables in my Spring Boot Java @Entity model class to show up as an actual JSON object when sent to the client side 【发布时间】:2018-12-08 02:55:54 【问题描述】:,但我不确定这怎么可能
我在 Spring Boot 中有这个 @Entity 类:
@Entity
@Data
public class A
@JsonProperty
private String value
A 类中的那个“值”应该是一个 JSON 对象,但我必须将它保存为字符串类型,否则它不会被 JPA 保存到数据库中。
当控制器将此模型对象返回给客户端时,JSON 字符串中的“值”将显示为完整的字符串,而不是 JSON 结构。
即
出现了
"value": "\"another_value\":\"1234\""
而不是
"value": "another_value":"1234"
是否有一些简单的方法可以在我的 A 类中注释“值”来解决这个问题?
谢谢
【问题讨论】:
如何为getValue()
定义一个自定义@JsonGetter 而不是使用Lombok 生成的那个。在那个 getter 中,不是返回 String
,而是通过使用 new ObjectMapper().readTree(value);
解析 JSON 字符串来返回 JsonNode
。好像这样可行?
是的 @nickb ,使用 JsonGetter 确实有效,非常感谢
很高兴听到这个消息。不知道为什么有人会在一小时后提出与使用 GSON 的答案完全相同的建议。
【参考方案1】:
您必须提供一个自定义 Getter,以便在反序列化时对其进行转换。我正在使用 google gson 进行反序列化。
@Entity
@Data
public class A
@JsonProperty
private String value;
@JsonGetter("value")
public HashMap getValueAsJson()
return new Gson().fromJson(value, HashMap.class);
【讨论】:
以上是关于我希望 Spring Boot Java @Entity 模型类中的 String 成员变量之一在发送到客户端时显示为实际的 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
spring boot:如何配置自动装配的 WebTestClient
Elasticsearch:从 Spring Boot 应用中连接 Elasticsearch
Spring Boot Batch ResourcelessTransactionManager DataSourceProperties$DataSourceBeanCreationExceptio
Spring Boot Batch ResourcelessTransactionManager DataSourceProperties$DataSourceBeanCreationExceptio