Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何压缩JSON响应_C#_Javascript_Asp.net_Compression - Fatal编程技术网

C# 如何压缩JSON响应

C# 如何压缩JSON响应,c#,javascript,asp.net,compression,C#,Javascript,Asp.net,Compression,我使用了大量ajax调用来查询数据库,得到了大量的文本(json)响应。我将压缩响应 在中使用javascript压缩文本有一种很好的方法 问题是我想在我的aspx服务器上压缩响应,并用javascript将其解压缩。因此,我需要在我的asp.net服务器上运行lzw_encode函数。我应该把这个函数翻译成C#还是有别的方法 使用上面的链接,如果不想配置IIS或更改标头,则可以使用以下方法压缩服务器上的代码: C# 公共静态字符串压缩(字符串s) { var dict=新字典(); char[

我使用了大量ajax调用来查询数据库,得到了大量的文本(json)响应。我将压缩响应

在中使用javascript压缩文本有一种很好的方法

问题是我想在我的aspx服务器上压缩响应,并用javascript将其解压缩。因此,我需要在我的asp.net服务器上运行
lzw_encode
函数。我应该把这个函数翻译成C#还是有别的方法

使用上面的链接,如果不想配置IIS或更改标头,则可以使用以下方法压缩服务器上的代码:

C#

公共静态字符串压缩(字符串s)
{
var dict=新字典();
char[]data=s.ToArray();
var输出=新列表();
半焦半焦;
字符串短语=数据[0]。ToString();
整数代码=256;
对于(变量i=1;i1)
Add((char)dict[短语]);
其他的
添加((字符)短语[0]);
dict[短语+currChar]=代码;
代码++;
短语=currChar.ToString();
}
}
如果(短语长度>1)
Add((char)dict[短语]);
其他的
添加((字符)短语[0]);
返回新字符串(output.ToArray());
}
在浏览器上,您可以使用以下工具对其进行解压缩:

javascript

// Decompress an LZW-encoded string
function lzw_decode(s) {
    var dict = {};
    var data = (s + "").split("");
    var currChar = data[0];
    var oldPhrase = currChar;
    var out = [currChar];
    var code = 256;
    var phrase;
    for (var i = 1; i < data.length; i++) {
        var currCode = data[i].charCodeAt(0);
        if (currCode < 256) {
            phrase = data[i];
        }
        else {
            phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
        }
        out.push(phrase);
        currChar = phrase.charAt(0);
        dict[code] = oldPhrase + currChar;
        code++;
        oldPhrase = phrase;
    }
    return out.join("");
} 
//解压缩LZW编码的字符串
功能lzw_解码(s){
var dict={};
变量数据=(s+“”)。拆分(“”);
var currChar=数据[0];
var oldphase=currChar;
var out=[currChar];
var代码=256;
var短语;
对于(变量i=1;i
在服务器端响应对象中为GZip添加一个头,如下所示:

Response.AddHeader("Content-Encoding", "gzip");
Response.Filter = new GZipStream(Response.Filter,
                                 CompressionMode.Compress);
此外,您还可以使用该类压缩内容,如下所示:

Response.AddHeader("Content-Encoding", "gzip");
Response.Filter = new GZipStream(Response.Filter,
                                 CompressionMode.Compress);

压缩JSON(和任何其他)响应的最简单方法是确保您的web服务器使用HTTP压缩。你在问题中提到的链接谈到了用JavaScript压缩数据,以便在服务器上存储数据时占用更少的存储空间。是的,这可能是一个更优雅的解决方案。我会试试的谢谢@托诺南-我改变了问题,以符合你的实际问题。请随时恢复/编辑。谢谢,现在听起来好多了!这是非常有用的,我希望我能给它另一个+100。如果我使用JsonResult方法,我可以使用:returnJSON(players,JsonRequestBehavior.AllowGet);Karl我还想了解有关如何使用
Response.AddHeader
的更多详细信息,该案例与@VAAA试图让我的
返回Json
发送数据压缩的案例相同。此答案与使用ASP.NET WebForms解决此问题有关,但我将为您指出一个可接受的答案