gpt4 book ai didi

java - 将动态字段添加到 Spring JSON View 响应

转载 作者:IT老高 更新时间:2023-10-28 13:52:53 25 4
gpt4 key购买 nike

有一种 Spring 方法可以使用 JSON views 从服务响应中过滤掉字段,但我缺少一种等效的方法来丰富响应与一些动态/合成领域这样的;

class User{
getFirstName(){...}
getLastName(){...}
getCreateDate(){...}
}

class UserViewA{
getFullName(){
return getLastName()+", "+getFirstName()
}
getCreateDate(){...}
}

class UserViewB{
getFullName(){
return getFirstName()+" "+getLastName()
}
getCreateDate(){...}
}

我可以将用户包装在 View 中,但我不想手动传播所有需要的用户字段。

我的另一个想法是使用用户对象扩展 View 并创建某种引用链接器以将值引用从用户对象复制到 View ,但是这对于集合来说会变得复杂。

是否有其他方法或框架来实现这一目标?这个概念根本没有解决吗?

更新:

举例说明:

  • 我不想包装 User 对象,因为我不想在不同的 UserView 对象中维护来自 User 类的相同 getter 方法。
  • 我无法扩展用户,因为它是从其他资源加载的域对象。
  • 不应在 User 对象中引用不同的 UserView 对象。

我正在寻找一种外观解决方案/框架/方法。

最佳答案

用 jackson @JsonUnwrapped怎么样?

http://fasterxml.github.io/jackson-annotations/javadoc/2.0.0/com/fasterxml/jackson/annotation/JsonUnwrapped.html

public class UserViewA {

@JsonUnwrapped
private User user;

public User getUser() ...

public String getFullName() {
return user.getFirstName() + " " + user.getLastName()
}
}

JsonUnwrapped 只会将 User 的所有属性拉到根级别,并且其中仍然有 UserViewA 自己的属性。

关于java - 将动态字段添加到 Spring JSON View 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156264/

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