2012-04-01 11 views
0

Javascriptでロングを処理できないため、RestEasyで引用符で囲んで文字列に変換します。RestEasy/Jacksonにロングを引用符で囲んで返す

私のDTOは次のとおりです。

public class DTO { 
    Long id; 
} 

と私は、これはそれが問題を引き起こしている{"id":2394872352498}として転送されます(デフォルトでは)今、{"id":"2394872352498"}残念ながら

として転送することにしたいです。

私はJacksonを使用してデータをシリアル化しています。 助けてくれてありがとう!

答えて

0

一つの解決策は、私が見つかりました:

import org.codehaus.jackson.JsonGenerator; 
import org.codehaus.jackson.JsonProcessingException; 
import org.codehaus.jackson.map.SerializerProvider; 
import org.codehaus.jackson.map.ser.std.SerializerBase; 

public class LongToStringSerializer extends SerializerBase<Long>{ 


    public LongToStringSerializer(Class<?> t, boolean dummy) { 
     super(t, dummy); 
    } 

    @Override 
    public void serialize(Long arg0, JsonGenerator arg1, SerializerProvider arg2) 
      throws IOException, JsonProcessingException { 
     arg1.writeString(arg0 == null ? null : arg0.toString()); 
    } 

} 

次に、このシリアライザを登録する必要があります

SimpleModule simpleModule = new SimpleModule("MyModule", new Version(0, 0, 0, null)); 
simpleModule.addSerializer(new LongToStringSerializer(Long.class, true)); 
objectMapper.registerModule(simpleModule);