0
我需要從Servlet輸出JSONP。我正在使用javax.json的JsonStreamer將JSON輸出到輸出流。爲了生成JSONP,我需要用回調函數名稱和形成回調調用表達式所需的括號來包圍JSON(回調(json,))。javax.json.stream.JsonGenerator:使用生成器後輸出流不可用
問題在於,在關閉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
}
}
謝謝CptBartender!我閱讀了文檔,但錯過了這一點。也許是因爲我沒有將「output ** source **」與輸出流相關聯,這對我來說更像是一個接收器或目標......我想知道爲什麼generator要關閉其他地方打開的流的責任? – mvuot