C# 如何压缩JSON响应
我使用了大量ajax调用来查询数据库,得到了大量的文本(json)响应。我将压缩响应 在中使用javascript压缩文本有一种很好的方法 问题是我想在我的aspx服务器上压缩响应,并用javascript将其解压缩。因此,我需要在我的asp.net服务器上运行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[
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解决此问题有关,但我将为您指出一个可接受的答案