【发布时间】:2015-10-07 23:36:41
【问题描述】:
在我们的应用程序中,一个数据库表有一些结果存储为 json,如下所示:
---------------------------------------------------- -------------
content | other fields...
---------------------------------------------------- --------------
"{ \"key\":[\"value1\",\"value2\",\"value3\"]}" | 12 ...
我需要获取并写入结果文件,一组记录的content 字段作为单个 json,例如:
(预期)
[
{
"content": {
"key": [
"value1",
"value2",
"value3"
]
}
}
.....
]
在对应的 java 实体中,我为除 content 之外的所有字段添加了 @JsonIgnore。
class Result{
//@JsonIgnore
//otherfields
....
@Column("content")
private String content;//the json string field
....
}
但是当我从 db 读取并使用以下方式写入文件时:
ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
writer.writeValue(new File(outFile), entityList);
我得到的文件是: (原创)
[
{
"content" : "{ \"key\":[\"value1\",\"value2\",\"value3\"]}"
}
....
]
您可能会注意到这个问题。它将 jason 字段作为字符串并作为键“内容”的值,而不是预期的嵌套 jason
【问题讨论】:
-
输出正确 - 您的期望可能不正确。如果你想要 JSON 表示内容,那么,你需要编写自定义序列化器
-
谢谢,这里我的问题与表示无关。@JsonRawValue 为我工作