从结构类中删除JSON级别层次结构

时间:2016-01-08 06:56:08

标签: java json

是否可以在生成的JSON字符串中删除级别层次结构,其中Java类结构是最终的(请参阅下面的Class Definition)?目前,填充的Root类的抽象结果显示在 JSON_ACTUAL 上,但我希望 JSON_EXPECTED_OUTPUT 作为JSON响应而不重构类定义。< / p>

课程定义

@XmlRootElement("json")
@XMLAccessorType(XmlAccessType.FIELD)
class Root {
    @XMLElement(name="keyOne")
    String keyOne;

    @XMLElement(name="childOne") 
    ChildOne childOne;

    @XMLElement(name="childTwo") 
    ChildTwo childTwo;

    // Possible more child.
    // Child can have its own child property(ies)
}

@XmlRootElement
class ChildOne {
    @XMLElement(name="keyTwo")
    String keyTwo;

    @XMLElement(name="keyThree")
    String keyThree;
}

@XmlRootElement
class ChildTwo {
    @XMLElement(name="keyFour")
    String keyFour;

    @XMLElement(name="keyFive")
    List<ChildThree> keyFive;
}

JSON_ACTUAL

"json": {
    "keyOne": <valueFor_keyOne>,
    "childOne": {
        "keyTwo": <valueFor_keyTwo>,
        "keyThree": <valueFor_keyThree>
    }
}

JSON_EXPECTED_OUTPUT

"json": {
    "keyOne": <value_for_keyOne>,
    "keyTwo": <value_for_keyTwo>,
    "keyThree": <value_for_keyThree>,
    "keyFive": [<elementList_for_keyFive>]
}

有关如何从类定义的Java类结构中生成 JSON_EXPECTED_OUTPUT 的任何提示?

编辑:

  • 在root上拥有多个子属性
  • Child可能包含它自己的子类属性(ies)
  • 属性可以是集合或数组。

1 个答案:

答案 0 :(得分:0)

为此你应该扩展那个类

@XmlRootElement("json")
@XMLAccessorType(XmlAccessType.FIELD)
class Root extends ChildOne {
    @XMLElement(name="keyOne")
    String keyOne;

}

这样,各个类中的所有字段都包含在当前实例中。