java – 从Jackson JsonNode创建InputStream的最佳方法是什么?
我想找到一种最聪明的方法来创建
Java库Jackson的JsonNode的InputStream.
到现在为止我做了: IOUtils.toInputStream(jsonNode.toString()); 但是这种方式在创建InputStream之前将JsonNode转换为String. 不需要: org.apache.http.entity.InputStreamEntity entity = new InputStreamEntity(IOUtils.toInputStream(jsonNode.toString())); 解决方法
>在大多数情况下,如果使用ObjectMapper直接生成字节数组,JSON将写为UTF-8并且可以节省一些内存.
ObjectMapper objectMapper = new ObjectMapper(); JsonNode json = ...; byte[] bytes = objectMapper.writeValueAsBytes(json); 具体来说,Apache HTTP客户端提供ByteArrayEntity以用于字节数组.对于其他用途,有一个ByteArrayInputStream. 当然,ObjectMapper应该只创建一次并重用.
例: ObjectMapper objectMapper = new ObjectMapper(); JsonNode json = ...; PipedInputStream in = new PipedInputStream(); new Thread(() -> { try { IOUtils.copy(in,System.out); } catch (IOException e) { ... } }).start(); try ( PipedOutputStream out = new PipedOutputStream(in); JsonGenerator gen = objectMapper.getFactory().createGenerator(out); ) { gen.writeTree(json); } catch (IOException e) { ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |