gpt4 book ai didi

jackson 将引用的对象字段序列化为根

转载 作者:行者123 更新时间:2023-12-04 05:04:05 25 4
gpt4 key购买 nike

我正在研究js MVC框架消耗的 Jersey REST服务的POC。在其中一种表单上,我需要返回UserProfile对象(由Jackson序列化为JSON),该对象将用于预填充HTML表单。在表单提交时,仅必须将字段的子集发送到服务器(因为“role”之类的某些字段是只读的并且不能更改),因此输入JSON将映射到UserProfileUpdateRequest对象。从服务器代码维护的角度来看,我希望这2个对象之间具有关系,因为UserProfileUpdateRequest将是UserProfile的子集,所以我的首选是使用组合:UserProfile包含UserProfileUpdateRequest。
问题在于,当 jackson 将UserProfile序列化为JSON时,所引用的UserProfileRequest实例的所有属性都将被包装在userProfileRequest字段中-看起来很自然,但对于JS家伙来说是 Not Acceptable (或者至少我被告知这是 Not Acceptable ) )。有什么办法可以迫使 jackson “平整”根对象并指出其属性必须在根下序列化的引用对象?一个小例子

class UserProfileRequest{
private String a;
private String b;
...
}

class UserProfile{
private String role;
...
private UserProfileRequest userProfileRequest;
}

因此,当UserProfile序列化时,我得到了:
{"role":"admin",...,"userProfileRequest":{"a":"...","b":"...",...}}

但想得到
{"role":"admin",...,"a":"...","b":"...",...}

我正在使用Jackson 1.9.7。

最佳答案

我认为您正在寻找@JsonUnwrapped批注。

class UserProfile{
private String role;
...
@JsonUnwrapped
private UserProfileRequest userProfileRequest;
}

编辑:这是 @JsonUnwrapped in Jackson 1.9.9的链接,因此它也应该在1.9.7中可用。

关于 jackson 将引用的对象字段序列化为根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com