2012-05-01 89 views
1

我會盡量解釋什麼,我想,我可以做到清晰。如何輕鬆地將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」的開始採取對象豆並記錄下來。

回答

1

也許這可能工作

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

writeValueAsString

+0

由於轉換回JSON,我試圖writeValueAsString,似乎做什麼我通緝 –

-3

你知道:

JSON.stringify

+2

他使用Java。 – SLaks

+0

:-) oopsy,抱歉,應該更好地查看代碼。 – Josh

+0

是啊,該解決方案應該是在Java中,並注意當我在那個方法是我已經有轉換的對象,我想我有 –

相關問題