我正在研究的项目使用JAXB参考实现,即类来自com.sun.xml.bind.v2.*
软件包。
我有一堂课User
:
package com.example;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "user")
public class User {
private String email;
private String password;
public User() {
}
public User(String email, String password) {
this.email = email;
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
我想使用JAXB编组器来获取User
对象的JSON表示形式:
@Test
public void serializeObjectToJson() throws JsonProcessingException, JAXBException {
User user = new User("user@example.com", "mySecret");
JAXBContext jaxbContext = JAXBContext.newInstance(User.class);
Marshaller marshaller = jaxbContext.createMarshaller();
StringWriter sw = new StringWriter();
marshaller.marshal(user, sw);
assertEquals( "{\"email\":\"user@example.com\", \"password\":\"mySecret\"}", sw.toString() );
}
封送处理的数据为XML格式,而不是JSON格式。如何指示 JAXB参考实现 输出JSON?
JAXB参考实现不支持JSON,您需要添加一个包,例如Jackson或Moxy
//import org.eclipse.persistence.jaxb.JAXBContextProperties;
Map<String, Object> properties = new HashMap<String, Object>(2);
properties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");
properties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);
JAXBContext jc = JAXBContext.newInstance(new Class[] {User.class}, properties);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(user, System.out);
//import org.codehaus.jackson.map.AnnotationIntrospector;
//import org.codehaus.jackson.map.ObjectMapper;
//import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
ObjectMapper mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
mapper.setAnnotationIntrospector(introspector);
String result = mapper.writeValueAsString(user);
在这里查看示例
问题内容: 我有一个问题。我想使用JAXB将一个对象转换为另一个对象。就像在中,我有一个class 和另一个class ,它们都有相同的参数,实际上都是相同的(复制粘贴),但是包不同。我想使用进行它们之间的转换。 怎么做,请帮帮我。 问题答案: 您可以执行以下操作。 注意: 不需要利用JAXBSource将数据具体化为XML。 它在对象模型上不需要任何注释。 com.home.Student co
问题内容: 我正在使用Jersey为服务器组件创建REST Web服务。 我要在列表中序列化的带有JAXB注释的对象如下所示: 我有一个REST资源来检索一个看起来像这样的发行版: 我还有一个REST资源来检索所有发行版的列表,如下所示: 我使用ContextResolver自定义JAXB序列化,当前配置如下: REST资源和上下文解析器都可以使用。这是第一个输出的示例: 这正是我想要的。这是列表
问题内容: 我想在REST应用程序中接受和响应JSON对象。我需要发送和接收的数据在.properties文件中。我已经阅读了它们,现在位于Object(From )中。是否可以在不实现新类的情况下编组和解组对象? 我在Weblogic服务器中使用Jax-rs API。 问题答案: 对WebLogic不太熟悉,因此我不知道它使用的是哪个版本的Jersey(1.x或2.x),但是使用1.x,您可以简
问题内容: 在我的数据模型中,我可以达到以下目的: 我已经可以序列化了,但是我需要序列化。本质上,我需要的是这样的: 有没有办法在JAXB批注中执行此操作而不修改我的模型? 问题答案: 您可以在此用例中使用: 该登记在使用类注释: 走得更远 除了创建新的实例外,我们还可以使用从数据库查询相应的实例。我们将更改为如下所示: 现在设置的情况下我们的,我们可以做到以下几点:
问题内容: 我正在尝试使用JAXB将A序列化为XML。我是Java的新手(来自C#),所以对此任务感到困惑。 我已经看到以下代码: 像这样被调用:,但是是错误的(我已经知道)。 Java专家可以告诉我如何调用此代码吗?提出一个更简单的实现(当然还有一个调用示例)也是最受欢迎的。 谢谢。 问题答案: 您将需要创建一个包装器类以保留: 然后,您可以执行以下操作: 这将产生以下输出: 注意事项 是线程安
注意: 我不需要创建java对象,因为我只需要检查一些值,但我没有找到任何东西来取消将它们作为通用对象或树或任何东西。像杰克逊的 JsonNode。如果可能的话,让我知道,这样我就可以避免所有这些混乱的对象来映射一切。 现在的问题是: 我不得不解组一个简单的xml,但是结果总是空的。我已经尝试了不同的注释,但是如果它们没有失败,结果就是null。 这似乎是这个问题的相同情况,但使用相同的注释是行不