代码之家  ›  专栏  ›  技术社区  ›  user1805458 Rick James

我希望spring boot java@entity模型类中的一个字符串成员变量在发送到客户端时显示为实际的json对象

  •  0
  • user1805458 Rick James  · 技术社区  · 7 年前

    我希望spring boot java@entity模型类中的一个字符串成员变量在发送到客户端时显示为一个实际的json对象,但我不确定这是如何实现的

    我在spring boot中有一个@entity类:

    @Entity
    @Data
    public class A {
    
        @JsonProperty
        private String value
    }
    

    类a中的“值”应该是一个json对象,但我必须将其保存为字符串类型,否则jpa不会将其保存到db中。

    当控制器将此模型对象返回到客户端时,json字符串中的“值”将显示为完整字符串,而不是json结构。

    这就出现了

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

    而不是

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

    有什么简单的方法来注释我的类a中的“值”来解决这个问题吗?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   deepansh2323    7 年前

    您必须提供一个自定义getter,以便在反序列化时转换它。我正在使用google gson进行反序列化。

    @Entity
    @Data
    public class A {
    
        @JsonProperty
        private String value;
    
        @JsonGetter("value")
        public HashMap getValueAsJson(){
            return new Gson().fromJson(value, HashMap.class);
        }
    }