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

 更新时间:2017年02月14日 15:04:59   作者:吃猫的大鱼  
本篇文章主要介绍了JavaScript中js对象与JSON格式字符串的相互转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

首先我们来看一下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)                                      

                 

                      (3)                                                                       (4)

 

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

相关文章

  • element-ui组件中input等的change事件中传递自定义参数

    element-ui组件中input等的change事件中传递自定义参数

    这篇文章主要介绍了element-ui组件中的input等的change事件中传递自定义参数的实例代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • 基于Vue的ajax公共方法(详解)

    基于Vue的ajax公共方法(详解)

    下面小编就为大家分享一篇基于Vue的ajax公共方法(详解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • JavaScript Canvas实现验证码

    JavaScript Canvas实现验证码

    这篇文章主要为大家详细介绍了JavaScript Canvas实现验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • javascript offsetX与layerX区别

    javascript offsetX与layerX区别

    FF没有offsetX属性,有个layerX属性,只要将事件源的位置设置成相对定位(position:relative)或绝对定位(position:absolute),两者结果就相等,表示事件源相对于父元素的X坐标。
    2010-03-03
  • url 特殊字符 传递参数解决方法

    url 特殊字符 传递参数解决方法

    有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码。
    2010-01-01
  • JS获取当前网址、主机地址项目根路径

    JS获取当前网址、主机地址项目根路径

    本文为大家提供JS如何获取当前网址、主机地址之后的目录及项目根路径的方法,喜欢的朋友可以收藏下
    2013-11-11
  • 获取当前点击按钮的id用this.id实现

    获取当前点击按钮的id用this.id实现

    这篇文章主要介绍了获取当前点击按钮的id的方法,,需要的朋友可以参考下
    2014-03-03
  • 小程序从手动埋点到自动埋点的实现方法

    小程序从手动埋点到自动埋点的实现方法

    这篇文章主要介绍了小程序从手动埋点到自动埋点的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • JS什么场景不适合箭头函数

    JS什么场景不适合箭头函数

    这篇文章主要介绍了JS什么场景不适合箭头函数,对箭头函数感兴趣的同学,可以参考下
    2021-04-04
  • JS/jQuery实现超简单的Table表格添加,删除行功能示例

    JS/jQuery实现超简单的Table表格添加,删除行功能示例

    这篇文章主要介绍了JS/jQuery实现超简单的Table表格添加,删除行功能,结合实例形式详细分析了JS与jQuery针对Table表格添加,删除行功能的相关实现技巧,需要的朋友可以参考下
    2019-07-07

最新评论

?


http://www.vxiaotou.com