Object.prototype.deep_clone = function(){
eval("var tmp = " + this.toJSON());
return tmp;
}
Object.prototype.toJSON = function(){
var json = [];
for(var i in this){
if(!this.hasOwnProperty(i)) continue;
//if(typeof this[i] == "function") continue;
json.push(
i.toJSON() + " : " +
((this[i] != null) ? this[i].toJSON() : "null")
)
}
return "{\n " + json.join(",\n ") + "\n}";
}
Array.prototype.toJSON = function(){
for(var i=0,json=[];i<this.length;i++)
json[i] = (this[i] != null) ? this[i].toJSON() : "null";
return "["+json.join(", ")+"]"
}
String.prototype.toJSON = function(){
return '"' +
this.replace(/(\\|\")/g,"\\$1")
.replace(/\n|\r|\t/g,function(){
var a = arguments[0];
return (a == '\n') ? '\\n':
(a == '\r') ? '\\r':
(a == '\t') ? '\\t': ""
}) +
'"'
}
Boolean.prototype.toJSON = function(){return this}
Function.prototype.toJSON = function(){return this}
Number.prototype.toJSON = function(){return this}
RegExp.prototype.toJSON = function(){return this}
// strict but slow
String.prototype.toJSON = function(){
var tmp = this.split("");
for(var i=0;i<tmp.length;i++){
var c = tmp[i];
(c >= ' ') ?
(c == '\\') ? (tmp[i] = '\\\\'):
(c == '"') ? (tmp[i] = '\\"' ): 0 :
(tmp[i] =
(c == '\n') ? '\\n' :
(c == '\r') ? '\\r' :
(c == '\t') ? '\\t' :
(c == '\b') ? '\\b' :
(c == '\f') ? '\\f' :
(c = c.charCodeAt(),('\\u00' + ((c>15)?1:0)+(c%16)))
)
}
return '"' + tmp.join("") + '"';
}
分享到:
相关推荐
1. 首先,`JSON.stringify()`将源对象转化为JSON字符串,这个过程会遍历对象的所有属性,包括嵌套的对象和数组。 2. 然后,`JSON.parse()`将这个字符串解析回一个新的JavaScript对象,这个新的对象与原对象在结构上...
当一个JSON字符串需要转换成JavaScript对象时,JavaScript提供了`JSON.parse()`方法。例如,如果我们有一个JSON字符串`'{ "name": "John", "age": 30 }'`,我们可以用以下方式解析它: ```javascript let jsonString...
在JavaScript中,内置的`JSON对象`提供了基本的JSON支持,包括`JSON.parse()`用于将JSON字符串转换为JavaScript对象,以及`JSON.stringify()`用于将JavaScript对象转换为JSON字符串。然而,某些情况下,我们可能需要...
先将原始对象转换为JSON字符串,然后再将这个字符串解析为新的对象。这样可以实现深度克隆,但需要注意的是,这种方法不适用于包含函数、循环引用、`undefined`等非JSON兼容类型的对象。 ```javascript var ...
在JavaScript中,我们可以使用`JSON.parse()`方法将一个JSON字符串转换为JavaScript对象,而`JSON.stringify()`方法则可以将JavaScript对象转换成JSON字符串。例如: ```javascript var jsonString = '{"name":...
例如,你可以将Java的HashMap、ArrayList等对象直接转换为JSON字符串,或者将JSON文本解析成Java对象,方便数据的序列化和反序列化。 2. **commons**:这可能指的是Apache Commons,一个包含大量Java工具类的项目,...
3. 当浏览器支持JSON时,使用`JSON.stringify(obj)`将对象转化为JSON字符串,再用`JSON.parse(str)`将字符串还原为新的对象。这种方法简单但有局限性,因为它无法处理函数、循环引用和某些特殊类型的对象。 4. 如果...
在实际应用中,开发者可以通过Fastjson的parseObject()和parseArray()方法将JSON字符串转化为Java对象或集合,反之,通过toJSONString()方法将Java对象转化为JSON字符串。此外,Fastjson还支持类型转换、深度克隆、...
组装JSON数据通常涉及创建一个JavaScript对象,然后将其转换为JSON字符串。在JavaScript中,我们可以使用`JSON.stringify()`方法将对象转换为JSON格式。例如: ```javascript let person = { name: 'Alice', ...
首先,你可以使用`TJSONParser.Parse`方法将JSON字符串转换为`TJSONObject`对象。然后,通过`TJSONObject`的属性和方法来访问和操作JSON数据。例如: ```delphi uses System.JSON; var JSONString: string; ...
这种方式将对象转换成JSON字符串,然后再解析回新的对象。但这种方法有一些限制,例如它不能处理函数和循环引用的对象。 总的来说,JavaScript中的对象克隆是处理复杂数据结构的关键技术,理解浅度克隆和深度克隆的...
它将对象转换为JSON字符串,然后再解析回新的对象。但是,这种方法不能处理函数、循环引用以及Date、RegExp等特殊类型的对象。 2. 循环遍历:通过递归地遍历对象的所有属性,创建一个新的对象并逐个复制属性。这...
在反序列化JSON时,SuperObject会自动将JSON字符串转换为相应的Delphi类型。例如,从JSON字符串中读取数据: ```delphi var JSONStr: string; JSON: ISuperObject; begin JSONStr := '{"name":"John","age":30}'...
`exjs.toJson()`和`exjs.fromJson()`分别用于将JavaScript对象转换为JSON字符串和从JSON字符串恢复为对象;`exjs.formatDate()`可以格式化日期,使其更符合人阅读的习惯。 5. **实用工具**:Exjs还提供了一些实用...
7. **深度克隆对象**:利用`JSON.parse()`和`JSON.stringify()`可以实现一个简单的深度克隆对象的方法,但要注意这种方法无法处理循环引用和某些类型的值(如函数)。 8. **查找数组中最后一次出现的位置**:`...
6. **序列化与反序列化**:可能支持对象到JSON字符串的转换以及从JSON字符串恢复对象的功能。 7. **默认值**:可能允许为对象的属性设置默认值,当属性不存在时自动填充。 "object-extended" 库的链式API设计使得...
- `decode(jsonStr)`: 解码JSON字符串`jsonStr`为对应的Lua值。 此外,库可能还包含一些高级特性,比如: - **安全编码/解码**:防止恶意数据注入,例如限制对象深度,或者禁止某些特殊键的编码。 - **日期时间...
可以使用 JSON.parse(JSON.stringify(obj)) 方法深度克隆一个对象。 17. 编写 JavaScript 脚本隐藏一个超级链接真实的地址。 可以使用 JavaScript 事件处理函数和 HTML 元素的 hidden 属性隐藏超级链接真实的地址...
将对象转换为JSON字符串,然后再解析回新的对象。但是,这种方法不能处理函数、循环引用和Date等特殊类型。 2. **递归函数**:创建一个函数,遍历对象的所有属性,并为每个属性创建一个新的值。如果属性是对象,就...