Jackson を使用して XML にシリアル化するときに問題が発生しているようです。私のコードは以下の通りです:
テストコンテナ
package com.test;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonProperty;
public class TestContainer {
private String testContainerID;
private String testContainerMessage;
private ArrayList<TestChild> testContainerChildren;
@JsonProperty("TestContainerID")
public String getTestContainerID() {
return testContainerID;
}
@JsonProperty("TestContainerID")
public void setTestContainerID(String testContainerID) {
this.testContainerID = testContainerID;
}
@JsonProperty("TestContainerMessage")
public String getTestContainerMessage() {
return testContainerMessage;
}
@JsonProperty("TestContainerMessage")
public void setTestContainerMessage(String testContainerMessage) {
this.testContainerMessage = testContainerMessage;
}
@JsonProperty("TestContainerChildren")
public ArrayList<TestChild> getTestContainerChildren() {
return testContainerChildren;
}
@JsonProperty("TestContainerChildren")
public void setTestContainerChildren(ArrayList<TestChild> testContainerChildren) {
this.testContainerChildren = testContainerChildren;
}
}
テスチャイルド
package com.test;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName(value="TestChild")
public class TestChild {
private String testChildID;
private String testChildMessage;
@JsonProperty("TestChildID")
public String getTestChildID() {
return testChildID;
}
@JsonProperty("TestChildID")
public void setTestChildID(String testChildID) {
this.testChildID = testChildID;
}
@JsonProperty("TestChildMessage")
public String getTestChildMessage() {
return testChildMessage;
}
@JsonProperty("TestChildMessage")
public void setTestChildMessage(String testChildMessage) {
this.testChildMessage = testChildMessage;
}
}
使用する
シリアライゼーション:
XmlMapper xm = 新しい XmlMapper(); TestContainer tc = xm.readValue(sb.toString(), TestContainer.class);
逆シリアル化:
System.out.println(xm.writeValueAsString(tc)); tc = xm.readValue(sb.toString(), TestContainer.class);
私がやっていることは、クラスパス上のフォルダーから XML ファイルをロードし、ファイルの内容を StringBuffer に入れることです。問題は、オブジェクトのコレクション用に生成された XML です。XML を記述するときは、次のようなものが必要です。
<TestContainerChildren><TestChild><...(Element Details)...></TestChild></TestContainerChildren>
しかし、私は得ています:
<TestContainerChildren><TestContainerChildren><...(Element Details)...><TestContainerChildren></TestContainerChildren>
ここで何が欠けているのかわかりません。シリアライゼーション/デシリアライゼーションの JSON 部分には問題がなく、XML だけです。Jackson と JAXB の両方のアノテーションを使用してラッピングをオフにしようとしましたが、次のアノテーションを使用してみました。
- @JsonRootName
- @JsonProperty
- @ジャクソンXmlElementWrapper
- @ジャクソン要素
- @XmlElementWrapper
- @XmlElement
これは私の側ではばかげていると確信していますが、どんな助けでも大歓迎です。