转自:http://casheen.iteye.com/blog/121319
Java代码  

  1. Object.prototype.deep_clone = function(){
  2. eval("var tmp = " + this.toJSON());
  3. return tmp;
  4. }
  5. Object.prototype.toJSON = function(){
  6. var json = [];
  7. for(var i in this){
  8. if(!this.hasOwnProperty(i)) continue;
  9. //if(typeof this[i] == "function") continue;
  10. json.push(
  11. i.toJSON() + " : " +
  12. ((this[i] != null) ? this[i].toJSON() : "null")
  13. )
  14. }
  15. return "{\n " + json.join(",\n ") + "\n}";
  16. }
  17. Array.prototype.toJSON = function(){
  18. for(var i=0,json=[];i<this.length;i++)
  19. json[i] = (this[i] != null) ? this[i].toJSON() : "null";
  20. return "["+json.join(", ")+"]"
  21. }
  22. String.prototype.toJSON = function(){
  23. return '"' +
  24. this.replace(/(\\|\")/g,"\\$1")
  25. .replace(/\n|\r|\t/g,function(){
  26. var a = arguments[0];
  27. return  (a == '\n') ? '\\n':
  28. (a == '\r') ? '\\r':
  29. (a == '\t') ? '\\t': ""
  30. }) +
  31. '"'
  32. }
  33. Boolean.prototype.toJSON = function(){return this}
  34. Function.prototype.toJSON = function(){return this}
  35. Number.prototype.toJSON = function(){return this}
  36. RegExp.prototype.toJSON = function(){return this}
  37. // strict but slow
  38. String.prototype.toJSON = function(){
  39. var tmp = this.split("");
  40. for(var i=0;i<tmp.length;i++){
  41. var c = tmp[i];
  42. (c >= ' ') ?
  43. (c == '\\') ? (tmp[i] = '\\\\'):
  44. (c == '"')  ? (tmp[i] = '\\"' ): 0 :
  45. (tmp[i] =
  46. (c == '\n') ? '\\n' :
  47. (c == '\r') ? '\\r' :
  48. (c == '\t') ? '\\t' :
  49. (c == '\b') ? '\\b' :
  50. (c == '\f') ? '\\f' :
  51. (c = c.charCodeAt(),('\\u00' + ((c>15)?1:0)+(c%16)))
  52. )
  53. }
  54. return '"' + tmp.join("") + '"';
  55. }

测试:

Java代码  
  1. var json = {
  2. str : "abcde",
  3. num : 6,
  4. reg : /foobar/i,
  5. array : [1,2,3,4,5],
  6. func : function(x,y){return x+y},
  7. obj : {a : "b"}
  8. }.toJSON();
  9. alert(json);
  10. // result
  11. {
  12. "str" : "abcde",
  13. "num" : 6,
  14. "reg" : /foobar/i,
  15. "array" : [1, 2, 3, 4, 5],
  16. "func" : function(x,y){return x+y},
  17. "obj" : {
  18. "a" : "b"
  19. }
  20. }

转载于:https://www.cnblogs.com/loushangshaonian/archive/2012/09/19/2693089.html

js 对象和Json的转换,js及深度复制相关推荐

  1. jQuery——高级(js对象、json、ajax)

    目录 js对象 json ajax js对象 创建js对象的两种方式: 1.通过new Object创建: var p1 = new Object(); // 设置属性,和方法 p1.name = & ...

  2. vscode js对象转json字符串

    插件 JSON Parse & Stringify 使用 1.js对象转json字符串 选中js对象,ctrl+shift+p调出命令输入框 输入JSON: Stringify Javascr ...

  3. JS对象与JSON字符串之间的转换

    JSON - JS中的对象只有JS自己认识,其他的语言都不认识  - JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别, 并且可以转换为任意语言中的对象,JSON在开发中主要用来数据 ...

  4. JS对象和JSON字符串相互转化总结

    在web开发中,一般情况下需要前端和服务器的交换数据,我们一般使用JSON来完成数据的传输,JavaScript操作的对象是一般是变量:因此我们需要将JSON字符串转换为JS变量,下面总结JS对象和J ...

  5. JSON转JS对象,JS对象转JSON

    JSON转JS对象,JS对象转JSON </h1><div class="clear"></div><div class="po ...

  6. fabric.js对象转json存储并通过json转fabric klass对象添加到画布中

    fabric对象转JSON: JSON对象转fabric对象[klass]: 这个是对于图片对象的 从图片对象JSON转 klass对象 fabric.Rect.fromObject(jsonObje ...

  7. 将JS对象转换为JSON |将JSON转换为JS对象

    一.将JSON字符串为JS对象 在JS中,如果直接输入 var arr = {arr:[1,2,3]}; 返回的是一个object对象 因此如果我们需要将其转换为JSON,可以用如下方式进行转换 va ...

  8. JS对象和JSON的相互转换方法

    JS对象和JSON的相互转换方法 一个复杂的js对象 //json要求和js对象是一样的,只不过key必须是字符串//js对象在声明的时候是否加双引号是可以选择的var student = {last ...

  9. Json对象和Json字符串以及js对象(JavaScript对象)的区别

    1.Json概念 概念:JSON (JavaScript Object Notation) 一种简单的数据格式,是一种比较轻量级的数据存储格式: 2.Json与JS对象的对比 区 别 JSON Jav ...

最新文章

  1. java form 上传文件_java通过表单进行文件上传的几种方法
  2. IDEA 在头注解上添加用户名称和时间
  3. 黑客入侵交警计算机系统删交通违法记录牟利
  4. 高可用服务 AHAS 在消息队列 MQ 削峰填谷场景下的应用...
  5. normandie出错重试与缓存机制对交互的影响,开发者注意
  6. 一行 Python 代码能实现什么丧心病狂的功能? | CSDN博文精选
  7. oracle装一半报错要卸掉,OpenSUSE下oracle11gR2的安装卸载
  8. php通用编码,php字符串怎么转换编码
  9. 橙光游戏软件 怎么整体测试,橙光游戏怎么让编辑来审核?
  10. 纬度,经度和坐标系网格
  11. background系列属性
  12. 《三十岁前的每一天》--水湄物语 读后感
  13. PTA L1-039 python实现
  14. 22.数组和指针的姻缘
  15. springmvc考研交流平台 java ssm mysql
  16. android 关机闹钟 实现,android 关机闹钟
  17. iPhone 6/6Plus UI界面设计和适配尺寸规范
  18. JDK9-G1 -XX:ParallelGCThreads 默认选择源码解析
  19. 不在985,但这些专业全国“第一”
  20. iptables限制网速

热门文章

  1. linux提升网络实时性,通过调整Linux内核参数提升网络性能
  2. mysql chartset utf 8_[数据库]MySQL chartset_星空网
  3. python语言程序的特点_Python语言有哪些优点?
  4. linux iconv函数失败,Linux 编码转换 (iconv失败的解决方法)
  5. 单刹车信号不合理故障_关于汽车制动系统有哪些故障?该如何解决?
  6. 什么是Ruby on Rails
  7. 路由器安置(Routing)
  8. CVPR 2020 《12-in-1: Multi-Task Vision and Language Representation Learning》论文笔记
  9. 2017年10月08日 上学
  10. 特征值与特征向量(一)