详解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 相关文章推荐
jquery中实现标签切换效果的代码
Mar 01 Javascript
jquery 与NVelocity 产生冲突的解决方法
Jun 13 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
Jan 15 Javascript
jQuery使用ajax跨域获取数据的简单实例
May 18 Javascript
js实现文字截断功能
Sep 14 Javascript
JavaScript中立即执行函数实例详解
Nov 04 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
angular 服务的单例模式(依赖注入模式下)详解
Oct 22 Javascript
JavaScript实现数字前补“0”的五种方法示例
Jan 03 Javascript
VsCode与Node.js知识点详解
Sep 05 Javascript
ElementUI多个子组件表单的校验管理实现
Nov 07 Javascript
d3.js实现图形缩放平移
Dec 19 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
解析smarty模板中类似for的功能实现
2013/06/18 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
JS设计模式之责任链模式实例详解
2018/02/03 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python和c语言的主要区别总结
2019/07/07 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
python collections模块的使用
2020/10/16 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
Python实现简单猜数字游戏
2021/02/03 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
旅游安全协议书
2014/04/21 职场文书
班主任对学生的评语
2014/04/26 职场文书
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL