我很困惑。引用 json.org
JSON 建立在两种结构之上:
因此,我认为 '""' 不应该是有效的 JSON 字符串,因为它既不是列表值(即不以 '[' 开头并以 ']' 结尾),但 JSON.parse 不会给出异常并返回空字符串。
它是一个有效的 JSON 字符串吗?
function test()
{
alert(Array.join.call(arguments,'/')) //alerts /
alert(Array.prototype.join.call(arguments,'/')) //alerts Js/JScript
alert(Array.join(arguments,'/')) //alerts Js/JScript
}
test('Js','JScript');
Run Code Online (Sandbox Code Playgroud)
为什么会有这种差异?为什么需要先引用原型?另外,为什么只有当连接只需要一个分隔符参数时,Array.join才会提供所需的结果.
使用 pako( https://github.com/nodeca/pako ) Pako在 javascript 中进行压缩的代码。它压缩字符串 't'
var compressedString = pako.gzip('t', {level: 4, to: 'string'}));
$.ajax('/decompress', {string: compressedString})
Run Code Online (Sandbox Code Playgroud)
/decompress 执行解压的代码
from cgi import parse_qs, escape
import json
import zlib
def application(environ, start_response):
status = '200 OK'
try:
request_body_size = int(environ.get('CONTENT_LENGTH', 0))
except (ValueError):
request_body_size = 0
request_body = environ['wsgi.input'].read(request_body_size)
d = parse_qs(request_body)
response_headers = [('Content-type', 'text/plain')]
start_response(status, response_headers)
inputString = d.get('string')[0]
# Use same wbits(=31) as used by pako
decompressed = zlib.decompress(inputString, 31);
return 'done'
Run Code Online (Sandbox Code Playgroud)
进行解压会引发以下错误。zlib.decompress 行发生错误。
错误:解压缩数据时出错 …