【发布时间】:2013-06-03 19:23:49
【问题描述】:
我有一个这样的 DTO:
public Foo {
public int bar = 123;
public Map<String, Object> params; // key1=v1, key2=v2 etc.
}
我希望它序列化到/从以下 JSON:
{
"bar": 123,
"key1": "v1",
"key2": "v2"
}
有谁知道如何使用 Jackson 或 Genson 做到这一点?基本上,我希望对 DTO 中声明的字段进行自动类型转换,但任何“额外”都可以进入 params 映射。
【问题讨论】:
-
使用 Jackson 的流 API 和
Foo的构建器类,是的,这是可能的。我相信杰克逊甚至有可能将“其余”未映射的成员吞入Map<String, Object>,但我从未使用过... -
你也可以试试gson(但它适用于draft3版本)
-
@David:我很好奇你的用例需要那种 JSON 结构。如果
params有一个名为bar的密钥呢? -
它是 API 的一部分,支持 JSON 正文或表单数据的 POST。因此,如果 JSON 是扁平的并且相关端点需要能够接受额外的东西,它会很有帮助。是的,如果将来添加与 params 中现有键匹配的字段,则可能会出现问题。
-
你试过使用反射吗?