1

我将尽可能清楚地解释我要完成的工作。

我正在编写一个 Web 应用程序的后端,该应用程序使用 REST API 来提取用于客户端报告的数据。我正在编写的框架使用 Codehaus jackson 来解析从 JSON 到数据对象(数据 bean)的请求。我有一堆这种类型的 API,10-15。他们每个人都从客户端获得不同的请求对象(尽管确实存在一些继承)。我想做的是为这些 API 中的每一个添加日志记录(使用 log4j),这样当我输入每个方法时,请求数据对象都会被记录下来。简单的解决方案是为这些数据对象中的每一个实现一个 toString() 方法,但我想避免遍历所有这些数据对象,看看是否有类似于杰克逊将 JSON 解析为对象的方式的解决方案。一世。

我认为有很简单的方法可以做到这一点。

这是 REST API 及其数据 bean 的示例:

@POST
@Path("/path123/")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response getSomeData(@Context HttpServletRequest httpServletRequest, DataBeanExample bean){
    DataBeanExample resultBean;
    //DO SOME STUFF , for example take the bean, extract parameters from it and call some other api.
    return Response.ok(resultBean, MediaType.APPLICATION_JSON).build();

}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "DataBeanExample")

public class DataBeanExample{

@XmlElement(name = "timeFrame", required = true)
private String timeFrame = "";
@XmlElement(name = "timeFrom",required = true)
private long timeFrom;
@XmlElement(name = "timeTo",required = true)
private long timeTo;

public String getTimeFrame() {
    return timeFrame;
}

public void setTimeFrame(String timeFrame) {
    this.timeFrame = timeFrame;
}

public long getTimeTo() {
    return timeTo;
}

public void setTimeTo(long timeTo) {
    this.timeTo = timeTo;
}

public long getTimeFrom() {
    return timeFrom;
}

public void setTimeFrom(long timeFrom) {
    this.timeFrom = timeFrom;
}

}

在示例中,我想做的是在“getSomeData”的开头获取对象 bean 并记录它。

4

2 回答 2

2

可能这可能有效

new ObjectMapper().writeValue(System.out, dataBeanExampleInstance)

或者writeValueAsString

于 2012-05-01T14:58:27.953 回答
-3

你知道吗:

JSON.stringify

于 2012-05-01T14:50:51.497 回答