`
Relucent
  • 浏览: 210314 次
  • 性别: 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  
这 这也可以....

相关推荐

    拷贝JSON对象值进Java Bean对象

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而Java Bean是符合特定规范的Java类,通常用于封装数据。这篇文章将深入探讨如何通过源码和工具实现这一转换过程。 首先,我们需要理解JSON对象的...

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

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

    JS中Json对象

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

    深入理解JavaScript中的深拷贝与浅拷贝:实现方法与应用场景

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

    JavaScript的json封装

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

    纯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: "张三", ...

    使用JQuery实现从JSON对象转换为form提交数据

    首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在前端应用中,我们经常从服务器获取JSON格式的数据,然后在...

    asp字符串转json对象类

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

    JavaScript数组对象JSON学习笔记

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

    jQuery实现简单复制json对象和json对象集合操作示例.docx

    在处理 JSON(JavaScript Object Notation)数据时,jQuery 提供了一个方便的方法 `jQuery.extend()` 来实现对象的复制。JSON 是一种轻量级的数据交换格式,常用于在前后端之间传输数据。 在提供的示例中,`jQuery....

    JavaScript and JSON Essentials

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

    javascript中json对象长度.pdf

    javascript中json对象长度.pdf

    javascript中json对象长度.docx

    javascript中json对象长度.docx

    JavaScript JSON Cookbook mobi

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

    JSON对象互转案例fastjson

    例如,如果你有一个Java对象,你可以使用`stringify()`方法将其转换成JSON格式的字符串,以便于在网络间传输或者存储。这个过程也被称为序列化。例如: ```java Person person = new Person("John", 30); String ...

    json字符串转换c++类对象

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本文将深入探讨如何将JSON字符串转换为C++类对象,主要涉及以下知识点: 1. JSON库的选择:C++标准...

    巧用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集合是一种常见...

    比较json对象中的两个数组含有的相同元素,点击按钮输出新的数组

    3. **`Set` 和 `intersection()`**:JavaScript的`Set`对象提供了一个`intersection()`方法,用于找出多个集合的交集,但原生的`Array`没有此方法。我们可以自定义一个函数来实现这个功能: ```javascript function...

Global site tag (gtag.js) - Google Analytics