我会尽力解释我想要完成的事情。
我正在编写Web应用程序的后端,它使用REST API提取用于客户端报表的数据。 我正在编写的框架使用Codehaus jackson来解析从JSON到数据对象(数据bean)的请求。 我有一堆这样的API,10-15。 他们每个人从客户端获得一个不同的请求对象(尽管存在一些继承)。 我想要做的是为每个API添加日志记录(使用log4j),这样当我输入每个方法时,将记录请求数据对象。 简单的解决方案是为每个这些数据对象实现一个toString()方法,但我想避免遍历所有这些数据对象,看看是否有类似于jackson将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并记录它。
答案 0 :(得分:2)
可能这可能有效
new ObjectMapper().writeValue(System.out, dataBeanExampleInstance)
或writeValueAsString
答案 1 :(得分:-3)
你知道吗:
JSON.stringify