2012-05-01 12 views
1

私ができる限り明確に達成しようとしていることを説明しようとします。JSONをロギング目的の文字列に簡単に変換する方法

私は、クライアント側のレポートに使用されるデータを抽出するためにREST APIを使用するWebアプリケーションのバックエンドを作成しています。 私が書いているフレームワークは、JSONからデータオブジェクト(データbean)へのリクエストを解析するためにCodehaus jacksonを使用しています。 私はこの種のAPIの束を10-15持っています。 それぞれはクライアント側から別の要求オブジェクトを取得します(ただし、継承は存在します)。 私がしたいのは、これらのAPIのそれぞれにログを追加することです(log4jを使用して)ので、それぞれのメソッドを入力すると、リクエストデータオブジェクトがログに記録されます。 これらのデータオブジェクトのそれぞれに対してtoString()メソッドを実装するのが簡単な解決策ですが、これらのデータオブジェクトをすべて調べずに、jacksonがJSONをオブジェクトとして解析する方法。 オブジェクトをログに書き込むためにテキスト形式に変換し直してください。

私はそう簡単な方法があると思います。

この

は、RESTのAPIの一例であり、そのデータ豆:

@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を取りますログに記録する。

答えて

1

おそらくこれは、彼はJavaを使用しています

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

またはwriteValueAsString

+0

ありがとう、writeValueAsStringを試しました。欲しい –

-3

あなたはについてのを知っていますか:

JSON.stringify

+2

を働くかもしれません。 – SLaks

+0

:-) oopsy、申し訳ありませんが、コードをよく調べてください。 – Josh

+0

ええ、解決策はJavaでなければなりません。私がそのメソッドを使用しているときに変換済みのオブジェクトを持っていることに気付くと、私はjsonに変換する必要があります。 –

関連する問題