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

本篇文章主要介绍了JavaScript中js对象与JSON格式字符串的相互转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

首先我们来看一下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.php.cn/

此外提一句使用这两种方式转换后的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对象加以说明:

//(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)

efbecfcfc7640b6ae3aed75a40e9341a.png

3885c79c867466c51614dc2a1fe0aed4.png

(3)                (4)

468990c79c91ff34bea7f43fb36c71f9.png

f38b40a937511e15e6b75248785d803a.png

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

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

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

更多详解JavaScript中js对象与JSON格式字符串的相互转换相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值