转换JSON数据以匹配新的Java模型

时间:2014-06-12 19:19:03

标签: java json jackson

我的java应用程序使用复杂的对象图,这些对象图被杰克逊注释并序列化为json,以供客户端使用。最近,我不得不更改域模型中的一个对象,使得它不是包含X类型的两个子项,而是包含Set<X>。此更改的对象由模型中的几种类型的对象引用。

现在的问题是我有大量的json形式的测试数据用于运行我需要转换为这个新对象模型的单元测试。我首先考虑更新json文件是使用旧版本的java对象模型来反序列化json数据,使用新版本对象模型创建新对象,从旧对象中水化新对象,然后最终将新对象序列化回来JSON。我意识到,编程创建匹配的对象图然后保湿这些对象图的过程可能与手工修复json一样乏味,因为对象图相对较深而且不是简单的克隆。

我想知道如何完全手动修复这些json文件?即使是非基于java的json转换或解析工具,我也会接受任何建议。

1 个答案:

答案 0 :(得分:1)

一种可能性,如果有问题的对象在结构上足够紧密相关,那就是使用一个数据绑定设置读取,使用另一个设置写入。

例如:如果使用Jackson,您可以考虑实现自定义set和get方法;这样就可以为子类型存在setter;但只有Set值的吸气剂。类似的东西:

``` 公共课POJO {    私人X a,b;

public void setA(X value){a = value; }    public void setB(X value){b = value; }

public X [] getValues(){      返回新的X [] {a,b};    } ```

举例来说,

将读取POJO具有两个对象值属性“a”和“b”的结构,但写入结构具有一个属性“values”,JSON数组为2对象。 这只是读入(反序列化)和序列化(写出)不需要对称或相同的基本思想的一个例子。