Java 解压缩时JSON格式问题

Java 解压缩时JSON格式问题,java,json,gzip,Java,Json,Gzip,解压后我得到了下面的JSON数组,它看起来很难看,附加了很多额外的\\\\\,还有\r和\n。我需要使用gson将其转换为java对象。我得到了一个解析错误。下面是一个巨大的JSON数组的摘录。有什么好方法可以删除不需要的斜杠,以便gson可以解析它吗 ["\"{\\r\\n \\\"MsgHdr\\\" : {\\r\\n \\\"MsgFmtNr\\\" : \\\"CS00030538\\\",\\r\\n \\\"MsgFmtVerNr\\\" : \\\"003.01\\

解压后我得到了下面的JSON数组,它看起来很难看,附加了很多额外的
\\\\\
,还有
\r
\n
。我需要使用gson将其转换为java对象。我得到了一个解析错误。下面是一个巨大的JSON数组的摘录。有什么好方法可以删除不需要的斜杠,以便gson可以解析它吗

["\"{\\r\\n  \\\"MsgHdr\\\" : {\\r\\n    \\\"MsgFmtNr\\\" : \\\"CS00030538\\\",\\r\\n    \\\"MsgFmtVerNr\\\" : \\\"003.01\\\",\\r\\n    \\\"MsgInfSrcCd\\\" : \\\"XT\\\",\\r\\n    \\\"MsgOidNr\\\" : null,\\r\\n    \\\"MsgTs\\\" : \\\"2018-03-05 04:59:59\\\" }\\r\\n}\""]
下面是我的压缩和解压缩方法。由于大量JSON被推送到消息队列(GooglePubSub),因此需要额外的压缩工作

public static byte[] compress(String data) throws IOException {

    ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length());

    GZIPOutputStream gzip = new GZIPOutputStream(bos);

    gzip.write(data.getBytes());

    gzip.close();

    byte[] compressed = bos.toByteArray();

    bos.close();

    return compressed;

}

public static String decompress(byte[] compressed) throws IOException {

    StringBuilder sb = new StringBuilder();
    try {
        ByteArrayInputStream bis = new ByteArrayInputStream(compressed);

        log.info("bytearrayinputstream is", bis);

        GZIPInputStream gis = new GZIPInputStream(bis);

        BufferedReader br = new BufferedReader(new InputStreamReader(gis, "UTF-8"));

        // StringBuilder sb = new StringBuilder();

        String line;

        while ((line = br.readLine()) != null) {

            sb.append(line);

        }

        br.close();

        gis.close();

        bis.close();

    } catch (ZipException e) {
        log.info("Zip exception occured");
    }

    return sb.toString();


}

您是否手动执行gzip,无需。。浏览器将在后台自动处理gzip压缩和解压缩。。或者请提供gzip的代码。@numbluent添加了压缩和解压缩代码解压缩逻辑,假设base64编码的字节数组是UTF-8编码的unicode字符串。data.getBytes(“UTF-8”)也是如此;