详解JavaScript中js对象与JSON格式字符串的相互转换


Posted in Javascript onFebruary 14, 2017

首先我们来看一下js中JSON格式的字符串

var JSONStr1 = "{\"name\" : \"张三\"}";

注意以下的写法不是js中JSON格式的字符串,它只是一个js的字符串。

var JSONStr2 = "{'name' : '张三'}";

我们看JSON语法中对于字符串的定义:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

下面我们来看一下在js中怎么把JSON格式的字符串转换成一个JS对象。(

var jsObj3 = eval("(" + JSONStr1 + ")");
var jsObj4 = JSON.parse(JSONStr1);

推荐使用第二种方式具体原因请参看:http://www.json.org.cn/resource/json-in-javascript.htm

此外提一句使用这两种方式转换后的js对象,应该是“一个符合JSON数据格式的js对象”,也就是说它的属性是带着引号的,这只是我的一种猜测,因为如果JSON格式的字符串如下表示:

var JSONStr1 = "{\"f[name]\" : \"张三\"}";

那么转换后的JS对象的属性必定要加上引号,因为js对象的属性不加引号只能使用字母,数字,下划线和$符号表示,使用其它符号属性就要加上引号了,所以说JS对象字面量表示法中属性加上引号是不会错的。另外如果JSON格式的字符串如上所示,那么转换后的js对象对f[name]取值就不能使用 jsObj4.f[name] 要用 jsObj4['f[name]'] ,因为有特殊字符,这点要注意了。对于我的猜测,读者要有异议,可以提给我。

我们再来看看在js中js对象与JSON格式字符串的转换。下面我准备了几组js对象加以说明:

<input type="button" value="测试按钮1" onclick="testJson();"/>

<script type="text/javascript">
  //(1) 这是一个js对象
  var jsObj1 = {
    name : "张三"
  }
  //(2)这是一个内部带有方法js对象。
  var jsObj2 = {
    name : "张三",
    func : function(){
      alert("hello");
    }
  }
  //(3)这是一个符合JSON数据格式的js对象
  var jsonObj = {
    "name" : "张三",
    "age" : 10,
    "remark" : {"high" :170,"address" : "beijingshi"}
  }
  // js数组对象
  var jsArray = [
    {name : "张三"},
    {"age" : 10}
  ]

  function testJson(){

    var JSONstr1 = JSON.stringify(jsObj1);
    var JSONstr2 = JSON.stringify(jsObj2);
    var JSONstr3 = JSON.stringify(jsonObj);
    var JSONstr4 = JSON.stringify(jsArray);
    alert(JSONstr1);
    alert(JSONstr2);
    alert(JSONstr3);
    alert(JSONstr4);

  }

看一下弹框的内容:

               (1)

                                  (2)                                      

详解JavaScript中js对象与JSON格式字符串的相互转换                  详解JavaScript中js对象与JSON格式字符串的相互转换

                      (3)

                                                         

(4)

详解JavaScript中js对象与JSON格式字符串的相互转换详解JavaScript中js对象与JSON格式字符串的相互转换 

其中 (1)、(3)、(4)的执行结果说明,JSON解析器的stringify()函数对于js对象是fou符合JSON格式是不加限定,都可以把js对象转换成JSON格式字符串。

(2)的执行结果说明,js对象中如果没有JSON表示的值(比如函数和undefined)将会被排除。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
从js向Action传中文参数出现乱码问题的解决方法
Dec 29 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
Mar 28 Javascript
AngularJS的表单使用详解
Jun 17 Javascript
jQuery Mobile框架中的表单组件基础使用教程
May 17 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
Sep 06 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
Dec 25 jQuery
JavaScript实现快速排序的方法分析
Jan 10 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 Javascript
Element Steps步骤条的使用方法
Jul 26 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 #Javascript
用file标签实现多图文件上传预览
Feb 14 #Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 #Javascript
javascript中BOM基础知识总结
Feb 14 #Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 #Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 #Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 #Javascript
You might like
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
php调用shell的方法
2014/11/05 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
Knockoutjs快速入门(经典)
2012/12/24 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
在Python中使用成员运算符的示例
2015/05/13 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
Python 登录网站详解及实例
2017/04/11 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
Python中生成ndarray实例讲解
2021/02/22 Python
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
少先队入队活动方案
2014/02/08 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
合同补充协议书
2016/03/24 职场文书
Python基础之pandas数据合并
2021/04/27 Python
微信小程序基础教程之echart的使用
2021/06/01 Javascript
Java 数组内置函数toArray详解
2021/06/28 Java/Android