zoukankan      html  css  js  c++  java
  • JavaScript中,JSON格式的字符串与JSON格式的对象相互转化

      前言:JSON是一个独立于任何语言的数据格式,因此,严格来说,没有“JSON对象”和“JSON字符串”这个说法(然而”菜鸟教程“和”W3school“使用了“JSON对象”和“JSON字符串”这个说法,我也有点懵),可以称为符合JSON格式的某某对象或者字符串,例如符合JSON格式的js对象,符合JSON格式的字符串(为啥不说成符合JSON格式的js字符串,因为在所有语言中字符串都有相同的定义:数字、字母、下划线组成的一串字符)。

      JSON语法中对于字符串的定义是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

      1、JSON格式的字符串 ----> JSON格式的js对象:

    • 使用JSON.parse()函数

    推荐使用,如果遇到浏览器不支持这个方法,保持淡定,到JSON官网下载json2.js,并引入到当前页面,就能使用了

    var jsonStr = "{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}";
    var json = JSON.parse(jsonStr);
    console.log(json);//输出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}
    • 使用eval()函数

    不推荐使用,会产生安全问题

    var jsonStr = "{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}";
    var json = eval ("(" + jsonStr + ")");
    console.log(json);
    //输出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}
    • 使用jQuery插件jQuery.parseJSON()
    var jsonStr = "{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}"; 
    var json = jQuery.parseJSON(jsonStr); 
    console.log(json);//输出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}

      补充: 

      JSON解析器的parse()函数对于js对象是否符合JSON格式是不加限定的

      下面这种单引号套双引号的字符串,不符合JSON语法对字符串的定义,但也能使用上面三种方法转换成JSON格式的js对象

    var jsonStr = '{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}';
    var json = jQuery.parseJSON(jsonStr); 
    console.log(json);//输出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}

      2、JSON格式的js对象 ----> JSON格式的字符串:

    • 使用JSON.stringify()
    var json = {"name": "zhangsan", "age": 23, "email": "chentging@aliyun.com"};
    var jsonStr = JSON.stringify(json);
    console.log(jsonStr);//输出:"{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}"

      补充:

      与JSON解析器的parse()函数一样,stringify()对于js对象是否符合JSON格式也是不加限定的

    var jsonObj = {name : "zhangsan",age : 23, email : "chentging@aliyun.com"};
    var jsonStr = JSON.stringify(json);
    console.log(jsonStr);//输出:"{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}"

     

    参考文章:

    (1) https://www.cnblogs.com/cdf-opensource-007/p/6384724.html

    (2) https://www.cnblogs.com/longailong/p/7344567.html

  • 相关阅读:
    微信小程序中 数据缓存
    javascript 数组去重方法
    常用网站 ---总结
    vue面试题
    vue创建项目(命令方式)
    shutil 模块:文件复制.移动.压缩.解压.递归删除文件夹
    面向对象一些零散的知识点
    面向对象之多态
    面向对象与继承
    序列化与反序列化的三个模块:json pickle shelve
  • 原文地址:https://www.cnblogs.com/daihu/p/9773489.html
Copyright © 2011-2022 走看看