json.parse()
- 解析json字符串并返回对应的值,可以额外传入一个转换函数,用来将生成的值和其属性, 在返回之前进行某些修改。
json.stringify()
- 返回与指定值对应的json字符串,可以通过额外的参数, 控制仅包含某些属性, 或者以自定义方法来替换某些key对应的属性值。
polyfill
json
对象可能不被老版本的浏览器支持。可以将下面的代码放到js脚本最开始的位置,这样就可以在没有原生支持 json 对象的浏览器(如ie6)中使用 json
对象。
以下算法是对原生json
对象的模仿:
if (!window.json) { window.json = { parse: function(sjson) { return eval('(' + sjson + ')'); }, stringify: (function () { var tostring = object.prototype.tostring; var isarray = array.isarray || function (a) { return tostring.call(a) === '[object array]'; }; var escmap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'}; var escfunc = function (m) { return escmap[m] || '\\u' + (m.charcodeat(0) + 0x10000).tostring(16).substr(1); }; var escre = /[\\"\u0000-\u001f\u2028\u2029]/g; return function stringify(value) { if (value == null) { return 'null'; } else if (typeof value === 'number') { return isfinite(value) ? value.tostring() : 'null'; } else if (typeof value === 'boolean') { return value.tostring(); } else if (typeof value === 'object') { if (typeof value.tojson === 'function') { return stringify(value.tojson()); } else if (isarray(value)) { var res = '['; for (var i = 0; i < value.length; i++) res += (i ? ', ' : '') + stringify(value[i]); return res + ']'; } else if (tostring.call(value) === '[object object]') { var tmp = []; for (var k in value) { if (value.hasownproperty(k)) tmp.push(stringify(k) + ': ' + stringify(value[k])); } return '{' + tmp.join(', ') + '}'; } } return '"' + value.tostring().replace(escre, escfunc) + '"'; }; })() }; }
业界更专业, 更强大的json
对象 是 json2 和 json3。
规范
规范 | 状态 | 说明 |
---|---|---|
ecmascript 5.1 (ecma-262) json |
standard | initial definition. |
ecmascript 2015 (6th edition, ecma-262) json |
standard | |
ecmascript latest draft (ecma-262) json |
draft |
浏览器兼容性
yes | yes | 3.5 | 8 | 10.5 | 4 | yes | yes | yes | 4 | yes | yes | yes | yes |
yes | yes | 3.5 | 8 | 10.5 | 4 | yes | yes | yes | 4 | yes | yes | yes | yes |
yes | yes | 3.5 | 8 | 10.5 | 4 | yes | yes | yes | 4 | yes | yes | yes | yes |
66 | no | 62 | no | 53 | yes | 66 | 66 |
赞 (0)
打赏
微信扫一扫
相关文章:
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。 |
发表评论