我试图使用jaxb
注释将JSON数据转换为XML。我的JSON
有点像这样:
{
"Employee": {
"name": "Tanmay",
"Email": "tanmaypatil@xyz.com",
"Address": {
"City": "Florida",
"State": "Miami"
}
}
}
我想使用封送来创建看起来如下所示的XML:(请注意extension
标记,它在JSON
中没有,但我需要在XML
中添加)
<Company>
<Employee>
<FirstName>Tanmay</FirstName>
<extension>
<Address>
<City>Florida</City>
<State>Miami</State>
</Address>
</extension>
</Employee>
</Company>
我有以下几门课:
我的main类实际上会读取JSON数据并将其封送为XML。我使用Jackson读取JSON数据,为了简单起见,我删除了这些代码:
public class Main
{
public static void main(String[] args) {
JsonFactory jsonFactory = new JsonFactory();
JsonParser jsonParser = jsonFactory.createParser(new File(Main.class.getClassLoader().getResource("InputEPCISEvents.json").toURI()));
//I am using the JAKSON jsonParser to read the JSON file and automatically map it to the child classes
//Ommiting the JACKSON JsonParser code for simplicity purpose
JAXBContext context = JAXBContext.newInstance(Employee.class);
Marshaller mar = context.createMarshaller();
mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
mar.marshal(eventInfo, System.out);
System.out.println("-----------------");
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlTransient
public class Employee{
private String name;
private String email;
private Address address;
//getters and setters are ommited
//Noargs and allargs constuctor ommited
}
以下是我的address
类:
@XmlRootElement(name = "Employee")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Extension", propOrder = { "name","email","city","state"})
private class Address extends Employee{
@XmlElement(name = "extension")
private Extension extension;
public Extension getExtension() {
extension.setCity(getCity());
extension.setState(getState());
return extension;
}
public Extension setExtension(Extension extension) {
this.setCity(extension.getCity());
this.setState(extension.getState());
this.extension = extension;
}
}
以下是我创建的extension
类,它作为extension
标记将不会出现在传入的JSON中,但我需要在封送处理期间将其添加到XML
中:
@XmlAccessorType(XmlAccessType.FIELD)
public class Extension{
private String city;
private String state;
//getters and setters are ommited
//Noargs and allargs constuctor ommited
}
我想知道如何使用jaxb
执行以下操作。我可以创建一些额外的类或修改现有的类,但我不能更改我正在创建的传入JSON
或XML
,因为它们是标准格式。
>
如何将地址
、城市
、状态
从JSON映射到类对象。如果元素存在于address.class
中,那么它可以自动映射,但是由于我想要xml
中的extension
标记,所以我已经将它们移动到了我的extension.class
中,因此JAXB
无法识别它,也无法将其映射到对象。
如何将附加的extension
标记添加到将在封送处理期间创建的XML
。正如我们所看到的,JSON
不包含extension
标记,但我在XML
中需要它。如果是它的集合,那么我可以使用@XmlElementWrapper
,但在我的例子中,它不是集合。
我试着找了很多,但没有找到任何对我有帮助的东西。所以基于我的理解,我做了上面提到的事情。任何帮助或建议都将非常感谢。
我认为您必须在JAXBContext中注册所有使用过的类
JAXBContext context = JAXBContext.newInstance(Employee.class, Extension.class, ...)
或者,您也可以传递所有类的“root”包:
JAXBContext context = JAXBContext.newInstance("com.demo.beans")
我偶然发现了这个技巧,用于将值从匿名内部类获取到在外部类中声明的变量。它有效,但它感觉像一个肮脏的黑客: (是的,我意识到这个例子可以用一个简单的<code>JOptionPane,但我不能将<code>myValue
我有一个python问题,我对这方面还不熟悉,想知道我缺少了什么。 我想做的事情是打印一个嵌套的元组,但从内到外。 例如:应打印为null,A,B,C 所有元组的最大大小为2。 我在考虑使用递归函数来实现这一点;我有这个密码,但我不知道怎么了。 我不是在问这个问题的答案(那太好了),但如果你能告诉我代码出了什么问题,我将不胜感激。 有人吗?有什么想法吗? 谢谢
问题内容: 我有一个小整数列表,说: 我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即: 我知道必须有一种非常简单的方法来执行此操作,但不能完全解决。 谢谢 问题答案: 好吧,有一种非常简单但有些脆弱的方法,将其自身切片后再压缩。 如果您不知道,最后一个slice参数是“ step”。因此,我们从零(1、3、5)开始选择列表中的第二个项目。然后,我们执行相同的操作,但是从一个(2,4,
我正在开发一个使用Expressjs、Mongodb和Mongoose的服务器。我需要将一个元素(字符串)推入“tweets”数组,该数组位于对象(朋友)内部,而对象(朋友)又位于“friends”数组内部,而“friends”数组位于“users”对象内部,该对象在“users”集合中记录。下面是Mongodb集合中的文档的示例: 我需要首先从“users”数组中选择指定的用户名,然后访问这个用
问题内容: 我有一些孩子: 我想要以下布局: 无论文本中有多少文本,我都希望始终将其始终停留在底部,而不会将其从流程中移出。我听说这可以通过Flexbox实现,但我无法使其正常工作。 问题答案: 您可以使用自动边距 在通过和对齐之前,任何正的自由空间都会分配给该维度中的自动边距。 因此,您可以使用以下一种(或两种): 或者,您可以在增长之前使元素填充可用空间:
下面我有以下数据。 所以,我不知道为什么UDF可以使用int而不能使用CharArray。此外,我觉得可能有一种方法可以做到这一点,而不使用UDF..但不确定从哪里开始。对这里可能发生的事情有什么建议吗?