当前位置: 首页 > 知识库问答 >
问题:

使用Jackson使用JaxB注释进行Json映射

薛保臣
2023-03-14

如何使用杰克逊序列化此类

package com.progressivebeef.service.response;

@XmlRootElement(name = "response")
@XmlSeeAlso({ User.class,             Profile.class,MenuItem.class,Feedlot.class,Document.class,FeedlotDocument.class })
public final class PBResponse {

private Integer status = FAILURE;
private String code;
private String message;
private Integer totalRecords;
private List<Model> list = new ArrayList<Model>();


public Integer getStatus() {
    return status;
}

public void setStatus(Integer status) {
    this.status = status;
}

@XmlElementWrapper(name = "PBBeans")
@XmlAnyElement
public List<Model> getList() {
    return list;
}

public void setList(List<Model> list) {
    this.list = list;
}

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public Integer getTotalRecords() {
    return totalRecords;
}

public void setTotalRecords(Integer totalRecords) {
    this.totalRecords = totalRecords;
}

/**
 * @author tiqbal
 * Resets the response.
 */
public void reset(){

    this.status = FAILURE;
    this.list = new ArrayList<Model>();
    this.code = null;
    this.message = null;
    this.totalRecords = null;
}
}

Jackson没有拾取@XmlElementWrapper@XmlSee还有注释,Jackson也没有映射@XmlRootElement注释。我使用的是Jackson 1.9.0。Jackson正在将元素放入列表中,但没有映射POJO类的根元素。

这里是示例方法

package com.progressivebeef.service.impl;

@Service("/ActivityServiceImpl/")
@Path("/activityservice/")
public class ActivityServiceImpl implements ActivityService {

@POST
@Produces(MediaType.APPLICATION_JSON)
@Override
public Response inputJson(User user ) {

    System.out.println("user ");


    user.setUser_name("check user name");

    Profile profile = new Profile();

    profile.setFirst_name("abc");
    profile.setLast_name("khan");

    user.setProfile( profile );

    PBResponse response = new PBResponse();
    response.getList().add(user);

    return Response.ok(response).build();
}
}

它生成的响应是'{“response”:{“status”:0,“PBBeans”:[{“user_name”:“check user name”,“password”:“click123”,“user_role_key”:2,“profile”:{“first_name”:“abc”,“last_name”:“khan”,“tableName”:“pb_profile”,“pk”:”profile_id“},“table name”:”pb_user“,“pk”:“user_id”}]}'

没有在PBBeans标记中拾取bean的根名称。

共有1个答案

司空坚
2023-03-14

希望这能有所帮助。基本上,您需要在映射器中将WRAP_ROOT_VALUE设置为true。

 类似资料:
  • 我正在尝试使用Spring 4实现REST服务。 该应用程序使用Java 7构建,并在Tomcat 7上运行。 REST方法将返回JSON格式的customer对象。应用程序是注释驱动的。 Customer类有JAXB注释。Jackson罐子出现在课堂路径中。据我所知,Jackson将使用JAXB注释生成JSON。 客户类别: 我已经将REST服务类注释为@RestController(根据Spr

  • 问题内容: 我一直在尝试创建Jersey REST Web服务。我想从Java类接收和发出JSON对象,如下所示: 应该这样将其转换为JSON: 但是,我找不到为此的标准解决方案。似乎每个人都在实现自己的包装器 解决方案。这个要求对我来说似乎是最基本的。我不敢相信这是普遍接受的解决方案,尤其是因为Jersey确实是Java中更有趣的部分之一。 我还尝试了升级到Jackson 1.8,这仅给了我这一

  • 我有许多带有JAXB注释的实体,我希望使用消息转换器将它们转换为JSON。 我知道我的ObjectMapper可以读取JAXB注释: 但是当我调用rest服务时,默认的注册MappingJacksonHttpMessageConverter(它不是为读取JAXB而配置的)似乎会接管--当忽略@XMLTransient时,由于循环引用而导致stackoverflow... 如何配置Spring来使用

  • 如何在Grails 3.0.1中映射带有注释的域类? 以下步骤对我不起作用。 步骤1.我使用Grails 3.0.1创建了一个新应用程序()。 步骤2。如Hibernate注释映射中所述,我在src/main/com/books/Book中创建了一个新类。groovy(也是groovy) 步骤3。然后通过将相关条目添加到grails-app/conf/Hibernate/Hibernate,向Hi

  • 问题内容: 我正在尝试编写一个可以接受XML或JSON输入并分别输出JSON或XML的代码。即,如果我提供XML,则应返回JSON,如果我提供JSON,则应返回XML输出。 有人告诉我使用Jackson API和JAXB注释是可能的。谁能帮我这个忙吗? 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB(JSR-222) 专家组的成员。 下面是一个示

  • 不推荐使用,是否有其他解决此问题的方法?