java - 使用 Jackson 通过 java pojo 将 XMl 转换为 JSON

标签 java json xml jackson

我正在尝试将 xml 转换为 json。首先,我使用以下 xml 创建了 java 类

<CompositeResponse>
   <CompositeIndividualResponse>
      <PersonIdentification>2222</PersonIdentification>
   </CompositeIndividualResponse>
</CompositeResponse>

以下 java 类如下:

public class Main {
    public CompositeResponse CompositeResponse;
    public CompositeResponse getCompositeResponse() {
        return CompositeResponse;
    }
    public void setCompositeResponse(CompositeResponse CompositeResponse) {
        this.CompositeResponse = CompositeResponse;
    }
}

public class CompositeResponse {
    private List<CompositeIndividualResponse> CompositeIndividualResponse;

public List<CompositeIndividualResponse> getCompositeIndividualResponse() {
    return CompositeIndividualResponse;
}
public void setCompositeIndividualResponse(List<CompositeIndividualResponse> CompositeIndividualResponse) {
    CompositeIndividualResponse = CompositeIndividualResponse;
}
}

public class CompositeIndividualResponse {

    private String Persondentification;

    public String getPersondentification() {
        return Persondentification;
    }
    public void setPersonIdentification (String PersonIdentification) {
      this.PersonIdentification = PersonIdentification; 
    }

}

I am using the following code for conversion: 
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.dataformat.xml.XmlMapper;

public class XMLToJson {
    public static void main(String[] args) throws IOException {
        String content = new String(Files.readAllBytes(Paths.get("test.xml")));
        XmlMapper xmlMapper = new XmlMapper();
        Main poppy = xmlMapper.readValue(content, Main.class);
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(poppy);
        System.out.println(json);
    }
}

但我收到以下异常,CompositeIndividualResponse 无法识别。

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "CompositeIndividualResponse" (class com.test.custom.copy.Main), not marked as ignorable (2 known properties: "CompositeResponse", "compositeResponse"])
 at [Source: (StringReader); line: 3, column: 32] (through reference chain: com.test.custom.copy.Main["CompositeIndividualResponse"])

我相信我的 java pojo 不适合 xml 数据。那么如何定义pojo的集合来解决这个问题,这样我就可以得到以下json:

{  
   "CompositeResponse":{       
      "CompositeIndividualResponse":
      [  
         {  
            "PersonSSNIdentification":"221212501"
         }
      ]
   }
}

最佳答案

像这样定义你的POJO,

public class CompositeResponse {
     private List<CompositeIndividualResponse> compositeIndividualResponse;

     public List<CompositeIndividualResponse> getCompositeIndividualResponse() {
          return compositeIndividualResponse;
     }

    public void setCompositeIndividualResponse(List<CompositeIndividualResponse> compositeIndividualResponse) {
         CompositeIndividualResponse = compositeIndividualResponse;
     }
}

public class CompositeIndividualResponse {
    private String personIdentification;

    public String getPersonIdentification() {
        return personIdentification;
    }
    public void setPersonIdentification (String personIdentification) {
      this.personIdentification= personIdentification; 
    }
}

然后按如下方式更新您的主程序,

public class XMLToJson {
    public static void main(String[] args) throws IOException {
        String content = new String(Files.readAllBytes(Paths.get("test.xml")));
        XmlMapper xmlMapper = new XmlMapper();
        CompositeResponse poppy = xmlMapper.readValue(content, CompositeResponse.class);
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(poppy);
        System.out.println(json);
    }
}

关于java - 使用 Jackson 通过 java pojo 将 XMl 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485703/

相关文章:

java - Eclipse "run as android"什么都不做

neo4j - 为什么 Neo4j 创建 Node[0]?

java - 安卓 java.lang.IllegalArgumentException : Unable to find native library: main

json - 使用 Swift Decodable 进行动态(但称为另一个键值)JSON 解码

android - 我可以在 KeyboardView 中放置 GridLayout 吗?

PHP 使用 simpleXML 解析 georss 命名空间

java - XML 解析抛出 NullPointerException

java - 异常在线程 "main"java.lang.UnsatisfiedLinkError : no libopencv_java247 in java. library.path

Java 对象到 JSON 的转换

java - 找不到适合 JsonObjectRequest 的构造函数