详解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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
use jscript List Installed Software
Jun 11 Javascript
理解Javascript_10_对象模型
Oct 16 Javascript
javascript学习笔记(十四) window对象使用介绍
Jun 20 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
jquery中get和post的简单实例
Feb 04 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
浅析javascript函数表达式
Feb 10 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
vue+egg+jwt实现登录验证的示例代码
May 18 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正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php中stdClass的用法分析
2015/02/27 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
js实现圆盘记速表
2015/08/03 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
python编写的最短路径算法
2015/03/25 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Django开发中的日志输出的方法
2018/07/02 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
python为什么要安装到c盘
2020/07/20 Python
python的setattr函数实例用法
2020/12/16 Python
智能室内花园:Click & Grow
2021/01/29 全球购物
质量保证书范本
2014/04/29 职场文书
单位介绍信格式
2015/01/31 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
导游词之峨眉山
2019/12/16 职场文书