2017-08-02 166 views
0

我有Jaskcon傑克遜JsonSerializer

public class NullSerializer extends JsonSerializer<Object> { 

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

簡單的串行編譯此代碼的Java拋出錯誤

Error:java: java.lang.StackOverflowError 

後,我用這依賴

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

任何想法?

回答

1

完美的作品很適合我:

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",{}] 
    } 
} 

我想看看別的地方。

首先,檢查你的XSS的Maven。應該至少爲-Xss256k,也許你會需要更多,甚至更好,因爲編譯器使用不同於Java的堆棧,有時會將結構放在堆棧上,因此需要更多或更好的默認值爲1MB。

我希望你沒有使用GWT,因爲如果你的代碼暴露給GWT編譯器,這將是這種情況下的典型響應。

而最不可能發生的事情是你在編譯器中發現了一個真正的bug。

嘗試使用--debug選項與Maven,也許它會顯示更多信息。