JSON.stringify是浏览器高版本带的一个将JS的Objtect对象转换为JSON字符串的一个方法,不过再IE6下面,并不存在JSON这一对象,因此,用到此方法时,需要写一套兼容性的代码。 JSON.stringify的一些规则以及注意点:当对象为数字,null,boolean的时候,直接转换为相应的字符串就可以了。但是string,function,undefined,object,array等,需要特殊处理。
1.undefined,该类型使用JSON.stringify处理的时候,如果对象就是undefined,将会输出"undefined",如果对象是数组的元素,那么将会变成null,比如:[undefined],stringify之后变成了"[null]";如果该对象是object的元素,那么该属性将当作不存在,不输出,比如{a:1,b:undefined},stringify之后是"{\"a\":1},B属性直接抛弃。
2.字符串在拼接的时候需要把内部的双引号处理掉
代码如下
/**
* JSON stringify的实现
* @author norkts<norkts@gmail.com>
* @version 1.0 2015-11-24 15:11 实现了基本功能
* @version 1.1 2015-11-24 15:19 norkts 增加了JSON.stringify的兼用代码实现
* @version 1.2 2015-11-24 15:49 norkts 修改数组indexOf在IE下不兼容的写法,修改了undefined值的特殊处理
*/
(function(NS){
//简单类型
var simpleTypes = ["number", "boolean", "undefined", "string", "function"];
//JSON.stringify的主函数
function stringify(object){
var type = typeof object;
//如果是简单类型,则直接返回简单类型的结果
if(indexOf(simpleTypes, type) > -1){
return parseSimpleObject(object);
}
//数组对象的
if(object instanceof Array){
var len = object.length;
var resArr = [];
for(var i = 0; i < len; i++){
var itemType = typeof object[i];
if(indexOf(simpleTypes, itemType) > -1){
//undefined特殊处理,数组中变成null
if(itemType != "undefined"){
resArr.push(parseSimpleObject(object[i]));
}else{
resArr.push("null");
}
}else{
//递归处理JS数组中的复杂元素
resArr.push(stringify(object[i]));
}
}
return "[" + resArr.join(",") + "]";
}
//普通object对象
if(object instanceof Object){
if(object == null){
return "null";
}
var resArr = [];
for(var name in object){
var itemType = typeof object[name];
if(indexOf(simpleTypes, itemType) > -1){
//undefined特殊处理,object中不编码
if(itemType != "undefined"){
resArr.push("\"" + name + "\":" + parseSimpleObject(object[name]));
}
}else{
resArr.push("\"" + name + "\":" + stringify(object[name]));
}
}
return "{" + resArr.join(",") + "}";
}
}
function parseSimpleObject(object){
var type = typeof object;
if(type == "string" || type == "function"){
return "\"" + object.toString().replace("\"", "\\\"") + "\"";
}
if(type == "number" || type == "boolean"){
return object.toString();
}
if(type == "undefined"){
return "undefined";
}
return "\"" + object.toString().replace("\"", "\\\"") + "\"";
}
function indexOf(arr, val){
for(var i = 0; i < arr.length; i++){
if(arr[i] === val){
return i;
}
}
return -1;
}
/**
* 将stringify做二次封装
* @param object 要处理的对象
*
*/
NS.stringify = function(object, isEncodeZh){
var res = stringify(object);
if(isEncodeZh){
var encodeRes = "";
for(var i = 0; i < res.length; i++){
if(res.charCodeAt(i) < 0xff){
encodeRes += res[i];
}else{
encodeRes += "\\u" + res.charCodeAt(i).toString(16);
}
}
res = encodeRes;
}
return res;
};
})(window);
分享到:
相关推荐
在JavaScript中,`JSON.stringify` 是一个非常实用且强大的函数,用于将JavaScript值转换为JSON字符串。这对于存储或传输数据非常有用,尤其是在网络请求中,经常需要将数据序列化为JSON格式。 #### 二、基本语法与...
标题中的“JSON.stringify()报错:JSON未定义”是一个常见的JavaScript错误,通常出现在尝试使用`JSON.stringify()`方法但全局环境中没有定义JSON对象时。在浏览器环境中,JSON是默认支持的,但在某些旧版本的IE...
主要介绍了JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能,结合实例形式分析了JSON.parse()与JSON.stringify()方法实现深拷贝的相关实现技巧与操作注意事项,需要的朋友可以参考下
当我们需要将JavaScript对象发送到服务器或者存储在本地时,通常会使用`JSON.stringify()`方法将对象转换为JSON字符串。下面我们将详细探讨几种常见的将前端对象转换为JSON并使用`JSON.stringify()`的方法。 1. **...
jsp使用JSON.stringify()引用的json2.js
JSON.stringify 是 JavaScript 中用于将 JavaScript 对象转换成 JSON 字符串的一个关键方法。这个方法的主要目的是将非字符串数据类型,如对象、数组等,转换成字符串格式,以便于存储、传输或与服务器交换数据。 ...
JavaScript 内置的 JSON.stringify 和 JSON.parse 方法,为开发者提供了便捷的JSON数据序列化和反序列化能力。本文将深入探讨这两个方法的工作原理、使用场景以及一些高级技巧。 JSON.stringify 和 JSON.parse 是 ...
JSON.stringify在使用时,IE6、7、8会存在兼容问题,需导入json2.js
在IE6、7下使用JSON.stringify()方法兼容JS脚本
json-stringify-safe, 在循环引用( 如 JSON.stringify ) 上,但不引发 json-stringify-safe类似 JSON.stringify,但不引发循环引用。用法采用与 JSON.stringify 相同的参数。var stringify = require('json-...
JSON.stringify() 和 JSON.parse() 是JavaScript中用于处理JSON数据的两个关键函数,它们在JSON对象序列化和反序列化过程中起着至关重要的作用。 一、JSON.stringify() JSON.stringify() 的主要功能是将JavaScript...
其中,JavaScript内置对象`JSON`提供的`stringify()`方法用于将JavaScript对象转换为JSON格式的字符串,这一过程称为序列化。`JSON.stringify()`方法在处理包含中文字符的对象时,可能在某些环境下将中文字符转译成...
总结而言,JSON.parse和JSON.stringify是JavaScript中处理JSON数据的两个核心函数,它们让JSON格式数据的解析和序列化变得简单高效。无论是在Web开发中进行前后端的数据交互,还是在本地存储数据时,这两个函数都能...
JSON.stringify是JavaScript中用于将JavaScript对象转换为JSON字符串的关键方法。在现代浏览器中,这个功能是内建的,但在老版本的Internet Explorer(如IE6)中并不支持。因此,为了确保兼容性,我们需要编写一些...
JSON.parse() 和 JSON.stringify() 是JavaScript中用于处理JSON数据的两个重要方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它们常被用于...
在JavaScript中,JSON.stringify()函数是一个非常常用的工具,它用于将JavaScript值转换成JSON格式的字符串。然而,当处理包含日期对象(Date)的JavaScript对象时,JSON.stringify()并不按照我们期望的方式转换日期。...
JSON.stringify() 和 JSON.parse() 是JavaScript中处理JSON数据的关键函数,它们在JSON操作中起着至关重要的作用。本文将深入探讨这两个方法的功能、用法以及它们之间的差异。 首先,我们来看JSON.stringify()方法...
安全的JSON Stringify JSON.stringify的包装器,用于处理循环引用并防止已定义的getter JSON.stringify错误。 发现圆形参考时,通过返回[Circular]来处理圆形参考。 抛出错误的已定义getter通过返回[Throws]进行处理...
本文给大家介绍JSON中key动态设置及JSON.parse和JSON.stringify()的区别讲解,具体详情如下所示: var user_info_json = []; user_info_json[user_info_json.length] = eval('('+ '{'+ id +': '+ value +'}' +...