我會盡量解釋什麼,我想,我可以做到清晰。如何輕鬆地將JSON轉換爲字符串進行日誌記錄
我正在寫一個web應用程序的後端,使用的REST API用於提取用於客戶端的報告數據。 我正在寫的框架使用Codehaus jackson來解析從JSON到數據對象(數據bean)的請求。 我有一堆這樣的API,10-15。它們中的每一個都從客戶端獲得不同的請求對象(儘管存在一些繼承)。 我想要做的就是添加記錄(使用log4j的)每個這些API,這樣,當我進入每個請求的數據對象將被記錄的方法。 簡單的解決辦法是實現對這些數據對象的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」的開始採取對象豆並記錄下來。
由於轉換回JSON,我試圖writeValueAsString,似乎做什麼我通緝 –