将对象的 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应该是从字符串派生的对象。
希望对您有所帮助。
我将 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应该是从字符串派生的对象。
希望对您有所帮助。