Java 如何在JAXB/JSON中命名复杂对象?
结果:Java 如何在JAXB/JSON中命名复杂对象?,java,json,jaxb,Java,Json,Jaxb,结果: @XmlRootElement(name = "test") public class MyDTO { @XmlElement(name = "test2) private MyObject meta; } 问题: 我想要一个名为“test”的“outer”标签 为什么meta的@xmlement(name”属性不起作用 我的第一篇帖子 实际上,你可以用@XmlRootElement来命名你的“外部”标记。如果你需要另一个外部标记,我不知道如何实现 您的第二个顾虑可能是
@XmlRootElement(name = "test")
public class MyDTO {
@XmlElement(name = "test2)
private MyObject meta;
}
问题:
@xmlement(name
”属性不起作用{meta:{...}}
作为XML
{"myId":"id1","myMeta":"text1"}
这是我的小班,用来生成输出XML文件
@XmlRootElement(name = "mytupel")
public class Tupel {
// @XmlElement(name = ) does not work here - defined it on the getter method
private String id;
// @XmlElement(name = ) does not work here - defined it on the getter method
private String meta;
/**
* Needed for JAXB
*/
public Tupel() {
}
/**
* For Test purpose...
*/
public Tupel(String id, String text) {
super();
this.id = id;
this.meta = text;
}
@XmlElement(name = "myId")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement(name = "myMeta")
public String getMeta() {
return meta;
}
public void setMeta(String meta) {
this.meta = meta;
}
/**
* For Test purpose...
*/
@Override
public String toString() {
return id + ": " + meta;
}
}
希望这能回答你的问题!
干杯
马克斯
@XmlRootElement(name = "mytupel")
public class Tupel {
// @XmlElement(name = ) does not work here - defined it on the getter method
private String id;
// @XmlElement(name = ) does not work here - defined it on the getter method
private String meta;
/**
* Needed for JAXB
*/
public Tupel() {
}
/**
* For Test purpose...
*/
public Tupel(String id, String text) {
super();
this.id = id;
this.meta = text;
}
@XmlElement(name = "myId")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement(name = "myMeta")
public String getMeta() {
return meta;
}
public void setMeta(String meta) {
this.meta = meta;
}
/**
* For Test purpose...
*/
@Override
public String toString() {
return id + ": " + meta;
}
}
public class Main {
private static final String TUPEL_1_XML = "./tupel1.xml";
private static final String TUPEL_2_XML = "./tupel2.xml";
public static void main(String[] args) throws JAXBException, FileNotFoundException {
// init JAXB context/Marhsaller stuff
JAXBContext context = JAXBContext.newInstance(Tupel.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Unmarshaller unmarshaller = context.createUnmarshaller();
// create some Datatypes
Tupel data1 = new Tupel("id1", "text1");
Tupel data2 = new Tupel("id2", "42");
// produce output
marshaller.marshal(data1, new File(TUPEL_1_XML));
marshaller.marshal(data2, new File(TUPEL_2_XML));
// read from produced output
Tupel data1FromXml = (Tupel) unmarshaller.unmarshal(new FileReader(TUPEL_1_XML));
Tupel data2FromXml = (Tupel) unmarshaller.unmarshal(new FileReader(TUPEL_2_XML));
System.out.println(data1FromXml.toString());
System.out.println(data2FromXml.toString());
System.out.println(marshalToJson(data1FromXml));
System.out.println(marshalToJson(data2FromXml));
}
public static String marshalToJson(Object o) throws JAXBException {
StringWriter writer = new StringWriter();
JAXBContext context = JSONJAXBContext.newInstance(o.getClass());
Marshaller m = context.createMarshaller();
JSONMarshaller marshaller = JSONJAXBContext.getJSONMarshaller(m, context);
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshallToJSON(o, writer);
return writer.toString();
}
}