首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >杰克逊JsonSerializer

杰克逊JsonSerializer
EN

Stack Overflow用户
提问于 2017-08-03 04:53:44
回答 1查看 429关注 0票数 0

我用Jaskcon实现了简单的串行化

代码语言:javascript
复制
public class NullSerializer extends JsonSerializer<Object> {

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

编译此代码后,Java抛出错误

代码语言:javascript
复制
Error:java: java.lang.StackOverflowError

我正在使用这个依赖项

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.1</version>
</dependency>

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-03 10:53:55

对我来说效果很好:

代码语言:javascript
复制
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 For Maven。至少应该是-Xss256k,也许你需要更多,甚至更好,保留它的默认值为1MB,因为编译器使用堆栈的方式与Java语言不同,有时还会将结构放在堆栈上。

我希望您没有使用GWT,因为如果您的代码暴露给GWT编译器,这将是这种情况下的典型响应。

最不可能发生的事件是你在编译器中发现了一个真正的bug。

尝试在Maven中使用--debug选项,也许它会显示更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45470812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档