`
Relucent
  • 浏览: 209419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript JSON 对象深拷贝方法(一例)

    博客分类:
  • JS
阅读更多

其实深拷贝一个JS对象方法十分简单,只需要两部

1.首先将JS对象序列化为JSON格式

2.然后再将JSON转化为JS对象。

 

//任意一个复杂的JS对象

var obj = [1,23,4,{name:'名字',value:"数值"}];

 //将这个JS对象序列化为一个JSON字符串

var json = JSON.encode(obj)

 //将JSON字符串解析成一个新的JS对象

var newObj JSON.decode(json )

 序列化JSON的方法参照 http://relucent.iteye.com/admin/blogs/646016

 

 

 

 

如果使用的是ExtJs库,那就是

var obj = [1,23,4,{name:'名字',value:"数值"}]; var newObj = Ext.decode(Ext.encode(obj ));

 

 

分享到:
评论
5 楼 Relucent 2010-07-19  
glassprogrammer 写道
呵呵, 这样也是有问题的. 最初我也这样做的, 但是对日期类型的数据就不行, 转来转去日期类型就变成字符串了, JSON 规范中没有对日期的定义确实是一件憾事.
最后只有自己重新写了一个深拷贝的功能.



可以在转换JSON的时候将日期可以转成"new Date(12210301)" 的这种格式。
当然,重写一个深拷贝也是一个好方法。


smiky 写道
整来整去,效率呢?

这只是一个思路,其实这种序列化反序列化的效率的确不是很高(相对而言),不过值得庆幸的是,这个操作在客户端完成的。而且我们也太可能用JS去处理大型数据,所以这个可以不用太担心。


当然楼上那个效率相对比较高一些,一般应用也足够使用了。
4 楼 whiletrue 2010-07-19  
function clone(para){
        var rePara = null;
        var type = Object.prototype.toString.call(para);
        if(type.indexOf("Object") > -1){
            rePara = {};
            for(var key in para){
                if(para.hasOwnProperty(key)){
                    rePara[key] = clone(para[key]);
                }
            }
        }else if(type.indexOf("Array") > 0){
            rePara = [];
            for(var i=0;i<para.length;i++){
               rePara[rePara.length] =  clone(para[i]);
            }
        }else{
            rePara = para;
        }
        return rePara;
    }
这个也凑合,临时用用够了
3 楼 glassprogrammer 2010-07-16  
呵呵, 这样也是有问题的. 最初我也这样做的, 但是对日期类型的数据就不行, 转来转去日期类型就变成字符串了, JSON 规范中没有对日期的定义确实是一件憾事.

最后只有自己重新写了一个深拷贝的功能.
2 楼 smiky 2010-07-16  
整来整去,效率呢?
1 楼 flasheep 2010-07-16  
这 这也可以....

相关推荐

    javascript处理json字符串和json对象的类(含示例)

    在上述代码中,`jsonString`是一个JSON格式的字符串,通过`JSON.parse()`方法,我们将其转换为了一个JavaScript对象`jsonObject`。 二、JSON对象转换为JSON字符串 要将JavaScript对象转换为JSON字符串,可以使用`...

    JS中Json对象

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON是基于JavaScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 #### JSON...

    纯javascript实现json与对象的互相转换项目

    1. **JavaScript对象转换为JSON字符串**:这个过程通常称为`JSON.stringify()`,它可以将一个JavaScript对象转换成一个JSON格式的字符串。例如: ```javascript let obj = { name: 'John', age: 30 }; let json...

    JavaScript Json Create、Select、Delete、Update

    创建JSON对象在JavaScript中非常简单,只需要使用大括号 `{}` 来定义一个对象,用方括号 `[]` 定义一个数组。例如,创建一个包含姓名、年龄和爱好等属性的用户对象: ```javascript var user = { name: "张三", ...

    JavaScript数组对象JSON学习笔记

    ### JavaScript 数组对象 JSON 学习笔记 #### 一、JavaScript 数组操作 在 JavaScript 中,数组是一种常用的数据结构,用于存储多个值。本部分主要介绍如何创建数组、访问数组元素以及对数组进行各种操作。 #####...

    JavaScript and JSON Essentials

    JSON(JavaScript对象表示法)作为一种轻量级的数据交换格式,在这种背景下应运而生。JSON是一种基于文本的轻量级代码,用于创建对象并便于在互联网上传输数据,它的语法是JavaScript的一个子集,且自1999年标准化...

    JavaScript JSON Cookbook mobi

    JavaScript JSON Cookbook 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    巧用eval解析json对象

    在JavaScript中,我们通常使用`JSON.parse()`方法来解析JSON字符串,将其转化为可操作的对象: ```javascript let jsonString = '{"name": "John", "age": 30, "city": "New York"}'; let jsonObject = JSON.parse...

    JSON--List集合转换成JSON对象详解

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON作为数据交换格式,因其简洁、清晰的特点,在Web应用中得到了广泛的应用。而List集合是一种常见...

    javascript json数据解析工具json2.js

    1. JSON.parse(): 这个函数将一个JSON格式的字符串转换为JavaScript对象。例如: ```javascript var jsonString = '{"name":"John", "age":30, "city":"New York"}'; var jsonObject = JSON.parse(jsonString); ...

    json对象与数组以及转换成js对象的简单实现方法

    JSON 语法是 JavaScript 对象表示法语法的子集。 •数据在名称/值对中 •数据由逗号分隔 •花括号保存对象 •方括号保存数组 JSON 对象 JSON 对象在花括号中书写: 对象可以包含多个名称/值对: { firstName:John ...

    json上解析对JSON对象前台获取

    `JSON.parse()` 是JavaScript内置的方法,可以将一个JSON字符串转换为JavaScript对象: ```javascript var jsonString = '{"name":"张三","age":30,"city":"北京"}'; var jsonObject = JSON.parse(jsonString); ...

    JavaScript程序设计-JS中的JSON对象.pdf

    - JSON全称是JavaScript对象表示法,它是一种数据格式,用于存储和交换文本信息。 - JSON与XML类似,但比XML更简洁、解析速度更快,并且占用的存储空间更小。 - JSON可以被各种编程语言的JSON解析器和库所支持,...

    java解析xml生成json对象

    将XML转换为JSON对象是一个常见的需求,特别是在需要将XML数据与JavaScript或JSON支持的其他语言进行交互时。 本项目提供的"解析xml---xml文件转json对象"是一个Java工具类,用于将XML文件解析成JSON对象,便于处理...

    模仿json,根据对象生成json字符串,根据字符串生成对象

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输。它的语法简洁且易于人阅读和编写,同时也容易让机器解析和生成。本文将深入探讨如何模仿...

    JSON字符转JSON对象

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据通信。它以文本形式存储和传输数据,易于人阅读和编写,同时也易于机器解析和生成。JSON格式基于JavaScript的一...

    json与对象相互转换系列处理

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在IT领域,JSON被广泛应用于Web服务和应用程序之间的数据传输,因为它...

    json对象转换兼容js

    在JavaScript中,我们通常使用`JSON.stringify()`方法将JavaScript对象转换为JSON字符串,以及使用`JSON.parse()`方法将JSON字符串解析回JavaScript对象。 ### JSON.stringify() `JSON.stringify()`是JavaScript中...

    安卓 JSON实现对象和数组的相互转换

    在安卓开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于服务器与客户端之间的数据传输。Android应用程序经常需要将JSON字符串解析成Java对象,或者将Java对象序列化为JSON字符串。本...

    JavaScript对象拷贝与Object.assign用法实例分析

    总结,JavaScript中的对象拷贝是一个关键概念,区分浅拷贝和深拷贝对于正确处理数据至关重要。`Object.assign()`方法提供了一种便捷的浅拷贝方式,但无法实现完全的深拷贝,需要结合其他技术或自定义函数来完成深度...

Global site tag (gtag.js) - Google Analytics