2017-08-02 5 views
0

J'ai sérialiseur simple avec JaskconJackson JsonSerializer

public class NullSerializer extends JsonSerializer<Object> { 

    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { 
     jgen.writeString(""); 
    } 
} 

Après ce code Java Compiler lance erreur

Error:java: java.lang.StackOverflowError 

J'utilise cette dépendance

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.5.1</version> 
</dependency> 

Toutes les idées?

Répondre

1

fonctionne parfaitement bien pour moi:

public class Main { 
    static class NullSerializer extends JsonSerializer<Object> { 

    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { 
     jgen.writeString(""); 
    } 
    } 

    public static void main(String[] args) throws Exception { 
    ObjectMapper m = new ObjectMapper(); 
    SimpleModule module = new SimpleModule(); 
    module.addSerializer(Object.class, new NullSerializer()); 
    m.registerModule(module); 
    System.out.println(m.writeValueAsString(
     Arrays.asList(true, 1, "String", new HashMap()) 
    )); //prints "", while without registerModule - [true,1,"String",{}] 
    } 
} 

je chercherais ailleurs.

Pour un, vérifiez votre Xss pour Maven. Doit être au moins -Xss256k, peut-être vous aurez besoin de plus, ou mieux, laissez-le par défaut à 1 Mo, parce que le compilateur utilise la pile différemment de Java et met parfois des structures sur la pile.

J'espère que vous n'utilisez pas GWT, car si votre code était exposé au compilateur GWT, ce serait une réponse typique dans cette situation.

Et l'événement le moins probable serait que vous trouviez un véritable bug dans le compilateur.

Essayez d'utiliser l'option --debug avec Maven, peut-être affichera plus d'infos.