我正在尝试{"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;
}
}
答案 0 :(得分:1)
只需使用@JsonInclude(JsonInclude.Include.NON_NULL)
用于指示何时序列化带注释属性的值(用于字段,方法或构造函数参数)或带注释类的所有属性的注释。如果没有注释,则始终包含属性值,但通过使用此注释,可以指定简单的排除规则以减少要写出的属性数量。
import com.fasterxml.jackson.annotation.JsonInclude;
[...]
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SDBean {