将GZip Json String解压缩为Angularjs + Typescript中的普通Json字符串

时间:2016-05-09 15:28:41

标签: javascript json typescript gzip gzipstream

我们的应用程序是在Angularjs中构建的,在一个场景中我们向客户端发送了大量的JSON数据。所以需要很多时间。那么我们现在做了什么,我们将JSON数据作为GZIP字符串。

 public static string Compress(string s)
    {
        var bytes = Encoding.Unicode.GetBytes(s);
        using (var msi = new MemoryStream(bytes))
        using (var mso = new MemoryStream())
        {
            using (var gs = new GZipStream(mso, CompressionMode.Compress))
            {
                msi.CopyTo(gs);
            }
            return Convert.ToBase64String(mso.ToArray());
        }
    } 

使用上面的代码后,我们的字符串大小减少到很大程度。 但现在我们的问题是我们无法在客户端解压缩那个GZIP。

我试过跟随库,

GZIP Library ZLIB

但仍然在我们使用TypeScript时,我们在页面中无法访问方法

 var gunzip = new Zlib.Gunzip(bytes);
        var plain = gunzip.decompress(); 

在上面的行 Zlib 不可用。可能是由于TypeScript定义不可用。

所以任何人都可以帮我解压缩上面的Gzip字符串。

1 个答案:

答案 0 :(得分:1)

只需在全局级别声明Zlib,以便transpailer不会抱怨:

declare var Zlib : any;

其他选项是导入Zlib的类型定义,以便转换器识别符号:

http://definitelytyped.org/docs/from--from/index.html

http://definitelytyped.org/docs/from--from/modules/zlib.html