JSON字符串:
var str = '{ "name": "cxh", "sex": "man" }';
JSON对象:
var str2 = { "name": "cxh", "sex": "man" };
1、如果原型没有被增加的话则增加原型对象即if (!Object.prototype.toJSONString)
JSON中为JS扩充的方法有:
/** * 由JS对象转换成JSON字符串 */ array.toJSONString() boolean.toJSONString() date.toJSONString() number.toJSONString() object.toJSONString() string.toJSONString() /** * 由JS字符串转换成JSON对象 */ s.parseJSON(filter)
2、数组转换成JSON字符串
return '[' + a.join(',') + ']';
3、布尔值转换成JSON字符串
return String(this);
4、日期类型转换成JSON字符串
return '"' + this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z"';
说明:
这里返回的是根据世界时从 Date 对象获取的年份、月份等数据。
4、数字类型转换成JSON字符串
return isFinite(this) ? String(this) : 'null';
说明:
如果 number 是有限数字(或可转换为有限数字),那么返回 true。否则,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。
5、对象转换成JSON字符串
<script type="text/javascript"> var obj = {}; obj.name = 'zhangsan'; alert(obj.toJSONString()); </script>
说明:
处理过程为首先定义一个数组
var a = []; a.push(k.toJSONString() + ':' + v.toJSONString()); return '{' + a.join(',') + '}';
6、字符串转换成JSON字符串
if (/["\\\x00-\x1f]/.test(this)) { return '"' + this.replace(/[\x00-\x1f\\"]/g, function (a) { var c = m[a]; if (c) { return c; } c = a.charCodeAt(); return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); }) + '"'; } return '"' + this + '"';
7、由JSON字符串转换为JSON对象
s.parseJSON = function (filter) { ...... return filter(k, v); }
如:
new Date().toJSONString().parseJSON() 或 var array = [1, 2, 3, 4]; alert(array.toJSONString().parseJSON());
String类中的对象方法parseJSON有个可选的参数,hook,这个参数是个钩子函数,可以对返回的结果进行过滤和转化(看看有没有这样的需要了),它会获得解析过程中的每一个值,并做可能的替换。如果它返回了自己接收的东西的话,paresJSON方法的处理结果就不会有变化了。
Example: // Parse the text. If a key contains the string 'date' then convert the value to a date. myData = text.parseJSON(function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; });