`
Relucent
  • 浏览: 208638 次
  • 性别: 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中的深拷贝与浅拷贝:实现方法与应用场景

    深拷贝和浅拷贝是JavaScript中处理对象和数组复制的两种基本方法。选择使用哪一种取决于具体的需求和场景。浅拷贝适用于简单的数据结构,而深拷贝适用于需要完全独立副本的复杂数据结构。了解它们的工作原理和实现...

    asp输出json对象实例

    在JavaScript中,JSON对象可以通过`JSON.parse()`方法从JSON字符串转换而来,而在ASP中,我们可能需要使用类似的逻辑,但可能需要自定义函数来实现这个过程。 标签"asp json"表明这个实例是关于如何在ASP中操作和...

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

    在JavaScript中,我们可以通过`JSON.parse()`方法将JSON字符串转换为JavaScript对象: ```javascript var jsonString = '{"name":"John","age":30,"city":"New York"}'; var jsonObject = JSON.parse(jsonString); ...

    JavaScript Json Create、Select、Delete、Update

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

    将数组转换成JSON对象

    在现代JavaScript中,更推荐使用`JSON.stringify()`方法,这是一种更简洁、更标准的方式,可以将JavaScript值转换为JSON字符串: ```javascript const array = [1, 2, 3]; const jsonString = JSON.stringify(array)...

    javascript json字符串到json对象转义问题

    在JavaScript中,可以使用`JSON.parse()`函数将一个有效的JSON字符串转换为JSON对象。但是,如果JSON字符串中的特殊字符未正确转义,`JSON.parse()`将会抛出错误。例如,双引号(")在JSON字符串中必须被转义为`\\"`...

    javascript处理json字符串和json对象的类(含示例,最终版本)

    javascript处理json字符串和json对象的类。 可以把json对象转换成字符串, 也可以把json格式的字符串转换成json对象。 上一个版本有一个小问题,修改了。这是最终版本。 含有演示例子。

    json对象的创建和解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。在Java中,处理JSON对象通常涉及到创建JSON对象和...

    asp字符串转json对象类

    在ASP(Active Server Pages)开发环境中,经常需要处理数据的序列化与反序列化,其中JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据交互。本知识点主要关注如何将ASP中的...

    巧用eval解析json对象

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

    JavaScript的json封装

    因项目需求,自己拼接麻烦,所以将javascript拼接json封装成和java类似的操作,直接put() 与 get() 就可以使用,支持json数组,使用的时候只需要 创建对象 并赋值 然后调用内部参数即可,源码中有示例。因为删除操作...

    javascript json数据解析工具json2.js

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

    javascript遍历json对象的key和任意js对象属性实例.docx

    对于JSON对象(本质上是JavaScript对象的一种)和其他类型的对象,我们可以利用不同的方法来访问其所有的键(key)或属性。本文将详细介绍几种常用的遍历技术,并通过示例代码展示如何实现。 #### 方法一:使用`...

    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--List集合转换成JSON对象详解

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

Global site tag (gtag.js) - Google Analytics