有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javajavax。json。流动JsonGenerator:使用生成器后输出流不可用

我需要从Servlet输出JSONP。我正在使用javax的JsonStreamer。用于将json输出到输出流的json。要生成JSONP,我需要用回调函数名和形成回调调用表达式所需的括号(回调(JSON)包围JSON

问题是,在关闭JsonGenerator之后,我打印到流中的任何内容都会丢失。所以我不能用右括号完成JSONP。没有生成异常,代码运行正常

下面是中的演示代码(命令行java上下文以便于测试)

这是一只虫子还是我忽略了什么

package mvu.test.jsonstreamer;

import java.io.OutputStream;
import java.io.PrintStream;

import javax.json.Json;
import javax.servlet.ServletOutputStream;

public class JsonGeneratorTest {
    public static void main(String[] args) {
        PrintStream outstream = System.out;

        outstream.print("callbackFunc(");  // shown

        Json.createGenerator(outstream)
            .writeStartArray()
            .write("a string in an array")
            .writeEnd()
            .close();

        outstream.println(");");     // THIS IS LOST
    }
}

共 (1) 个答案

  1. # 1 楼答案

    根据JsonGenerator.close(){a1},调用close()方法将关闭底层输出源,或者在本例中,调用outstream