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

作者:阿沐

时间:2026-10-21

浏览:455

本文详细解析JavaScript中JS对象与JSON格式字符串的相互转换方法。重点介绍JSON.parse和eval两种解析JSON字符串的方式,以及JSON.stringify序列化JS对象时的行为。特别指出属性名包含特殊字符时的处理规则,以及函数和undefined值在序列化时被忽略的特性。

文章目录

JSON格式字符串的定义与识别

首先,我们探讨JavaScript中JSON格式字符串的概念。


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

需注意的是,以下示例并非JavaScript中的JSON格式字符串,而仅仅是普通的JS字符串。


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

依据JSON语法对字符串的定义:它是由双引号包裹的任意数量Unicode字符集合,并支持反斜线转义。一个字符对应一个单独的字符串。

JSON字符串转换为JS对象的方法

接下来介绍在JavaScript中将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]\" : \"张三\"}";

若JSON格式字符串如上所示,则转换后的JS对象属性必须加引号,因为JS对象属性不加引号时仅能使用字母、数字、下划线和$符号,其他符号需加引号。因此,在JS对象字面量表示法中,属性加引号是安全的。此外,若JSON格式字符串如上,对f[name]取值不能使用jsObj4.f[name],而应使用jsObj4['f[name]'],因含特殊字符,请留意。若读者对我的推测有异议,欢迎提出。

JS对象转换为JSON字符串的规则

我们再来看JavaScript中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)

JSON格式字符串的定义与识别                  JSON格式字符串的定义与识别

(3) (4)

JSON格式字符串的定义与识别 JSON格式字符串的定义与识别 

其中(1)、(3)、(4)的执行结果表明,JSON解析器的stringify()函数对JS对象是否符合JSON格式无限制,均可将JS对象转换为JSON格式字符串。

(2)的执行结果表明,若JS对象中不含JSON表示的值(如函数和undefined),则会被排除。

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

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章