用toJson()返回bean的一部分

时间:2015-05-21 21:41:32

标签: java json jersey jackson

我正在尝试{"status": its value}来回routeD!=0目前我正在收到{"status":201,"routes":null}我将以{"status":201}的形式获得没有"routes":null的回复}同时我不想丢失routeD==0的回复,例如{"status":230,"routes":[1,9,3]}

我提供任何帮助。

接收者类:

@Path("/data")
public class Receiver {

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response storeData(Data data) {
        Database db = new Database();

        String macD = data.getMac();
        int routeD = data.getRoute();
        double latD = data.getLatitude();
        double longD = data.getLongitude();
        double speedD = data.getSpeed();

        // Jackson class to wrapper the data in JSON string.
        SDBean bean = new SDBean();
        if (routeD != 0) {
            bean.status = db.insertData(macD, routeD, latD, longD);         
            return Response.status(bean.status).entity(bean.toJson()).build();

        } else {
            bean.routes = db.detectRoute(latD, longD);
            return Response.status(230).entity(bean.toJson()).build();

        }

    }

}

SDBean类:

public class SDBean {

    public int status;
    public ArrayList<Integer> routes;

    public SDBean(){
    status = 230;
}

    public String toJson() {

        ObjectMapper mapper = new ObjectMapper();
        String json = null;
        try {
            json = mapper.writeValueAsString(this);
        } catch (JsonProcessingException e) {
            e.printStackTrace();

        }
         System.out.println(json);
        return json;
    }

}

1 个答案:

答案 0 :(得分:1)

只需使用@JsonInclude(JsonInclude.Include.NON_NULL)

即可
  

用于指示何时序列化带注释属性的值(用于字段,方法或构造函数参数)或带注释类的所有属性的注释。如果没有注释,则始终包含属性值,但通过使用此注释,可以指定简单的排除规则以减少要写出的属性数量。

import com.fasterxml.jackson.annotation.JsonInclude;
[...]

@JsonInclude(JsonInclude.Include.NON_NULL)
public class SDBean {