2015-12-18 177 views
1

我不確定我是否要求正確的事情,但是在序列化爲JSON的同時是否有可能使GSON Gson.toJson(...)方法系列以「流模式」工作?比方說,有時也有使用Appendable時的情況是不可能的:使用GSON將對象序列化爲JSON輸入流?

final String json = gson.toJson(value); 
final byte[] bytes = json.getBytes(charset); 
try (final InputStream inputStream = new ByteArrayInputStream(bytes)) { 
    inputStreamConsumer.accept(inputStream); 
} 

上面的例子是不完美的在這種情況下,這是因爲:

  • 它生成的字符串json作爲臨時緩衝區。
  • json字符串產生一個新的字節數組,只是爲了將它包裝到一個ByteArrayInputStream實例中。

我認爲這不是寫一個CharSequenceInputStream適配器和擺脫創建字節數組克隆的一個大問題,但我仍然無法擺脫生成字符串臨時緩衝區,以有效地使用inputStreamConsumer的。所以,我期望像這樣:

try (final InputStream inputStream = gson.toJsonInputStream(value)) { 
    inputStreamConsumer.accept(inputStream); 
} 

是否有可能以某種方式使用GSON?

回答