Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringRESTAPI-如何正确格式化;列表“;以XML和;JSON_Java_Spring_Spring Boot_Spring Mvc_Jackson - Fatal编程技术网

Java SpringRESTAPI-如何正确格式化;列表“;以XML和;JSON

Java SpringRESTAPI-如何正确格式化;列表“;以XML和;JSON,java,spring,spring-boot,spring-mvc,jackson,Java,Spring,Spring Boot,Spring Mvc,Jackson,我已经创建了一个SpringREST控制器,我知道Spring在内部使用Jackson进行序列化/反序列化。但是,有一个要求是该API同时生成XML和JSON。 我注意到jackson dataformat xml使用列表对xml进行奇怪的序列化(参见下面的示例)。但是,JSON响应的格式是正确的 我尝试的是: 我听说JAX-RS在这两种语言中都可以很容易地处理这种格式 XML和JSON。但是,我们使用springdocs openapi生成 Swagger文档,它似乎不支持JAX-RS/ 泽西

我已经创建了一个SpringREST控制器,我知道Spring在内部使用Jackson进行序列化/反序列化。但是,有一个要求是该API同时生成XML和JSON。 我注意到jackson dataformat xml使用列表对xml进行奇怪的序列化(参见下面的示例)。但是,JSON响应的格式是正确的

我尝试的是:

  • 我听说JAX-RS在这两种语言中都可以很容易地处理这种格式 XML和JSON。但是,我们使用springdocs openapi生成 Swagger文档,它似乎不支持JAX-RS/ 泽西岛
  • 围绕DTO创建一个包装类,该类只包含类型为
    List
    的字段。这将修复XML格式,但会破坏JSON格式
  • 下面是我尝试做的一个简化示例:

    // Patient DTO
    @XmlRootElement(name="patient")
    public class Patient {
      private String firstName;
      private String lastName;
    }
    
    //实际的XML(我们不希望这些元素被称为“ArrayList”和“item”)
    约翰
    史密斯>
    //预期的XML(我们想要的)
    约翰
    史密斯
    

    任何帮助都将不胜感激

    你能看看这个和这个吗?您可以通过添加包装器来获得所需的
    xml
    结果,但这也会向
    json
    对象添加包装器。@iswailyildiz感谢您的回复。是的,我在发布之前已经看过了答案。正如我在文章中提到的,我已经尝试过包装类方法,但它不符合我的要求,因为它会影响JSON格式。我无法获得JSON的包装器
    // Controller 
    @GetMapping(value = "/patients", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
    public List<Patient> getPatients() throws PatientNotFoundException {
      return patientService.getPatients();
    }
    
    // JSON Response (this is the format we are getting and it is correct)
    [
      {
         firstName: "John",
         lastName: "Smith"
      }
    ] 
    
    // Actual XML (we don't want these elements to be called "ArrayList" and "item")
    <ArrayList>
      <item>
        <firstName>John</firstName>
        <lastName>Smith></lastName>
      </item>
    </ArrayList>
    
    // Expected XML (what we want)
    <patients>
      <patient>
        <firstName>John</firstName>
        <lastName>Smith</lastName>
      </patient>
    </patients>