使用特定字段将Java对象转换为JSON

时间:2016-10-17 10:45:14

标签: json jackson gson

我想创建两个不同的JSON文档,每个文档包含5个字段。我有一个有10个属性的POJO类。我想使用该POJO类形成具有5个属性的json1和具有5个属性的json2。有没有办法构建这些对象?

1 个答案:

答案 0 :(得分:3)

考虑编写两个单独的包装类,每个包装类公开两个案例所需的字段,并将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 - 有时这样的事情是关于如何改进代码的提示。但这取决于具体情况,在这种情况下可能不适用。