2014-04-08 164 views
0

如何使用杰克逊使用杰克逊

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; 
} 
} 

杰克逊序列化这个类JAXB注释的Json映射不拾取@XmlElementWrapper @XmlSeeAlso注解,杰克逊也不会映射@XmlRootElement注释。我正在使用杰克逊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(); 
} 
} 

响应它产生是“{ “响应”:{ “状态”:0 “PBBeans”:[{ “USER_NAME”: “检查用户名”, “口令”: “click123”, “user_role_key”:2, “简档”:{ “first_name的”: “ABC”, “姓氏”: “汗”, “表名”: “pb_profile”, “PK”: “PROFILE_ID”}, “表名”:“pb_user “,”pk“:”user_id“}]}}'

不会在PBBeans标签内拾取bean的根名称。

+0

你如何调用序列化方法?请使用示例数据将您的问题扩展到该代码。 –

+0

其实我在春天使用ApacheCXF,JAX-RS。 –

+0

好的,但向我们展示您的Web服务方法,它是/不工作。 –

回答

0

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