【发布时间】:2016-10-17 10:45:13
【问题描述】:
我想创建两个不同的 JSON 文档,每个文档包含 5 个字段。我有一个具有 10 个属性的 POJO 类。我想使用该 POJO 类形成具有 5 个属性的 json1 和具有 5 个属性的 json2。有没有办法构造这些对象?
【问题讨论】:
我想创建两个不同的 JSON 文档,每个文档包含 5 个字段。我有一个具有 10 个属性的 POJO 类。我想使用该 POJO 类形成具有 5 个属性的 json1 和具有 5 个属性的 json2。有没有办法构造这些对象?
【问题讨论】:
考虑编写两个单独的包装类,每个包装类都为这两种情况公开您想要的字段,并将 pojo 作为构造函数 arg 传递。
因此,其中一个公开了一组属性,可能如下所示:
public class JsonObject1 {
private MyPojo myPojo;
public JsonObject1(MyPojo myPojo) {
this.myPojo = myPojo;
}
public void getProperty1() {
return myPojo.getProperty1();
}
......
}
另一个类似,但暴露了另一个属性子集。
或者,您可以添加两个方法(可能添加到您的 POJO,或者可能添加到暴露 POJO 的服务类),每个方法都返回一个 Map(例如 HashMap),您在其中复制了特定的您想要的每个视图的属性,然后将这些地图转换为 JSON。这不是“模型驱动”的,但总体上可能工作量更少。感谢@fvu 的观察!
public Map<String, Object> getPojoAsMap1() {
Map<String, Object> m = new HashMap<>();
m.put("property1", pojo.getProperty1());
....
return m;
}
也有可能两种不同的 JSON 表示试图告诉你你的 POJO 应该被分成两个 POJO——有时这样的事情是关于如何改进你的代码的提示。但这要视情况而定,可能不适用于这种情况。
【讨论】: