Java 从结构类中删除JSON级别的继承人权限

Java 从结构类中删除JSON级别的继承人权限,java,json,Java,Json,是否可以删除生成的JSON字符串上的级别层次结构,其中Java类结构是最终的(请参见下面的类定义)?目前,已填充的Root类的抽象结果显示在JSON_ACTUAL上,但我希望JSON_EXPECTED_输出为JSON响应,而不重新构造类定义 类别定义 @XmlRootElement("json") @XMLAccessorType(XmlAccessType.FIELD) class Root { @XMLElement(name="keyOne") String keyOne;

是否可以删除生成的JSON字符串上的级别层次结构,其中Java类结构是最终的(请参见下面的
类定义
)?目前,已填充的
Root
类的抽象结果显示在JSON_ACTUAL上,但我希望JSON_EXPECTED_输出为JSON响应,而不重新构造类定义

类别定义

@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;
}
@XmlRootElement(“json”)
@XMLAccessorType(XmlAccessType.FIELD)
类根{
@xmlement(name=“keyOne”)
串键;
@xmlement(name=“childOne”)
ChildOne ChildOne;
@xmlement(name=“childTwo”)
孩子二个孩子二个;
//可能更多的孩子。
//子对象可以有自己的子属性
}
@XmlRootElement
ChildOne班{
@xmlement(name=“keytower”)
字符串键2;
@XMLElement(name=“keytree”)
字符串键三;
}
@XmlRootElement
二班{
@xmlement(name=“keyFour”)
字符串键四;
@xmlement(name=“keyFive”)
列出关键五项;
}
JSON\u实际值

"json": {
    "keyOne": <valueFor_keyOne>,
    "childOne": {
        "keyTwo": <valueFor_keyTwo>,
        "keyThree": <valueFor_keyThree>
    }
}
“json”:{
“关键一号”:,
“childOne”:{
“关键二”:,
“关键三点”:
}
}
JSON\u预期输出

"json": {
    "keyOne": <value_for_keyOne>,
    "keyTwo": <value_for_keyTwo>,
    "keyThree": <value_for_keyThree>,
    "keyFive": [<elementList_for_keyFive>]
}
“json”:{
“关键一号”:,
“关键二”:,
“关键三”:,
“五键”:[]
}
关于如何从类定义的Java类结构生成JSON预期输出的任何提示


编辑:

  • 在根目录上具有多个子属性
  • 子类可能包含自己的子类属性
  • 属性可以是集合或数组

    • 为此,您应该扩展该类

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

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

      如果我有另一个或多个子类,它会是相同的结构吗。子类也有自己的子类吗?见上面的编辑版本。