将对象的 json 存储为字符串 属性 作为 JSON 对象发送给客户端

sending json stored as string property of an object as JSON object to client

我将 cassandra 用作数据库,并将用户地址存储为 JSON 在 User 对象的 "address" 字段中。

class User {
  private long id;
  private String name;
  private String address;
}

那么DB列中的User行如下

id   |  name  |   address
================================
12345|  jhon  | {"hno":"12-10-46/3","street":"lavella road","city":"begaluru"}

但是当我从数据库查询 User 对象并作为 REST api 的结果返回时,我看到 Jackson 将用户对象转换为 JSON。但是我观察到 "address" 字段是字符串类型而不是另一个 JSON 对象。但我希望 "address" 在客户端被解释为 JSON 对象。

我怎么能说 jackson 也将内部字符串 属性 转换为 JSON?

我认为您应该在地址字段中使用注释 @JsonRawValue。

@JsonRawValue: per-property marker that can be used to specify that the value of property is to be included in serialization ''exactly'' as is, with no escaping or decoration -- useful for embedding pre-serialized JSON (or whatever data format is being used) in output

https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations

它被视为字符串,因为它是一个字符串。您需要将其转换为对象。不流利 Java 我设法找到了这个使用 javascript 引擎将字符串评估为对象的代码片段,就像浏览器一样:

 ScriptEngineManager manager = new ScriptEngineManager();
 ScriptEngine engine = manager.getEngineByName("js");        
 Object result = engine.eval([Your Address String Variable Here]);

然后result应该是从字符串派生的对象。

希望对您有所帮助。