java - 为什么 Jackson 没有完成从流创建 json?

标签 java json io jackson

我正在尝试将 json 从流写入另一个具有 Base64 字段的流,如下所示:

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;

import java.io.File;
import java.io.FileInputStream;

public class Exmaple {
    public static void main (String[] args) throws Exception {

        final JsonGenerator generator = new JsonFactory().createGenerator(System.out);
        generator.writeStartObject();
        generator.writeFieldName("data");
        generator.writeBinary(new FileInputStream(new File("D:\\somePath\\pdf.pdf")), -1);
        generator.writeEndObject();
    }
}

您可以使用任何文件代替 pdf.pdf

但输出时我得到:

{"data":"JVBERi0xLjMKJcfsj6IKMzAgMCBvYmoKPD
  • 尽管调用了 generator.writeEndObject(),但最后没有 "
  • base64 末尾没有 ===
  • 对象末尾没有 }

为什么会发生这种情况?如何解决这个问题???

最佳答案

需要添加 generator.close() 调用来导致刷新流。

关于java - 为什么 Jackson 没有完成从流创建 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46473037/

相关文章:

c++ - 用于独立于平台的二进制文件 I/O 的 C/C++ 库

file - 创建 2 个文件并向它们写入与 Lisp 中另一个文件不同的内容

java - 如何在 java 中组合具有相同属性值的对象的 2 个数组列表

java - printf() 输出困惑

java - 使用 Java 异常转换有效的 JSON

json - 使用 Perl 编码复杂的 JSON 结构

java - Maven命令行运行打包成jar的TestNG

jquery - 如何使用 jQuery 迭代 json 对象 - GeoNames.Org api

javascript - 使用 json 和 angularJs 访问范围内的嵌套菜单项

file - 从末尾读取日志文件并获取特定字符串的偏移量