• JSON数据的基础使用


    之前一直把JSON想做一种数据类型,通过这几天的使用,发现其实JSON只是一种数据的格式,而与int string double等等数据类型是有本质的区别。

    JSON(JavaScript Object Notation)是JavaScript编程语言的一个子集。正因为JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中。

    就像初高中的课本一样,想要掌握一样新技术、新知识,我们首先要掌握它的意义,也就是它存在的价值。

    JSON之所以能够广泛使用,与js的重要性提升不无关系。如果我们按照JSON的格式定义了一个对象,那么我们就可以通过对象名.键名来过去其中的数据。

    我将JSON的使用分为两个部分

    1、将其他数据类型转换为JSON

        1.1 首先提到的是JSON官方提到的方法:JSON.stringify();   

      语法

         JSON.stringify(value[, replacer [, space]])  

      参数

        value
       将要序列化成 JSON 字符串的值。
        replacer 可选
        如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被  序列化到最终的 JSON 字符串中。
        space 可选
       指定缩进用的空白字符串,用于美化输出(pretty-print)。
    举例说明:
      ① 只有value时:
    1 <script type="text/javascript">
    2          var student = new Object();
    3          student.name="Leon";
    4          student.age = "24";
    5          student.college = "shiep";
    6 
    7          var json = JSON.stringify(student);
    8          console.log(json);
    9  </script>

     输出结果:

    {"name":"Leon","age":"24","college":"shiep"}
    

      ②参数中有函数:

          对象+函数

          During the serialization process, if a toJSON method exists for the value argument, JSON.stringify first calls the toJSON method. If it does not exist, the original value is used. Next, if a replacer argument is provided, the value (original value or toJSON return-value) is replaced with the return-value of the replacer argument.Finally, white spaces are added to the value based on the optional space argument to generate the final JSON text.

       

     1 <script type="text/javascript">
     2          var student = new Object();
     3          student.name="Leon";
     4          student.age = "24";
     5          student.college = "shiep";
     6 
     7          student.toJSON = function(key){
     8               var replacement = new Object();
     9               for(var val in this){
    10                 if(typeof(this[val])==='string')
    11                   replacement[val] = this[val].toUpperCase();
    12                 else
    13                   replacement[val] = this[val]
    14               }
    15               return replacement;
    16          }
    17 
    18          var json = JSON.stringify(student);       
    19          console.log(json);
    20 </script>

          数组+函数:       

     1 <script type="text/javascript">
     2             
     3             var students = new Array() ;
     4             students[0] = "Lanny";
     5             students[1] = "dong";
     6             students[2] = "I love you";
     7             
     8             var json = JSON.stringify(students,switchJson);
     9 
    10             function switchJson(key,value){
    11                 return value.toString().toUpperCase();
    12             }
    13             console.log(json);
    14 </script>

    输出为: 

    "LANNY,DONG,I LOVE YOU" 

        ③参数中有数组:

         数组+数组     

     1 <script type="text/javascript">
     2             var students = new Array();
     3                 students[0] = "Leon";
     4                 students[1] = "James";
     5                 students[2] = "Frank";
     6 
     7             var schools = new Array();
     8                 schools[0] = "shiep";
     9                 schools[1] = "fdu";   
    10 
    11              var json1 = JSON.stringify(students,schools);
    12              var json2 = JSON.stringify(schools,students);   
    13 
    14              console.log("json1="+json1);
    15              console.log("json2="+json2);
    16 </script>

         输出结果为:

    1 json1=["Leon","James","Frank"]
    2 json2=["shiep","fdu"]

           如果两个参数均是数组的话,只序列化前一个数组。

        对象+数组

     1 <script type="text/javascript">
     2             var student = new Object();
     3                 student.name = "Leon";
     4                 student.age = "24";
     5                 student.college = "shiep";
     6 
     7             var students = new Array();
     8                 students[0] = "college";
     9                 students[1] = "age";
    10 
    11             var json = JSON.stringify(student,students);
    12             console.log(json);
    13 </script>

     结果为:

    1 {"college":"shiep","age":"24"}

      ④第三个参数  

      如果 space 是数字,则返回值具有空白的文本缩进指定数目在每个级别的。 如果 space 大于 10 时,文本缩进 10 个空白。

      如果 space 为非空字符串,如“ ”,返回值文本缩进与字符串的字符在每个级别。

      如果 space 为大于 10 个字符的字符串,使用前 10 个字符。  

    1.2 好多时候需要转换的信息并不是现成的对象,需要我们来拼凑,这时候需要

    下面的代码是将一张表格以一个行 为单位组成json

     1 <script type="text/javascript">
     2         var fitModelsingle = new Array();
     3         $('#fitModelDispArea tr').each(function () {
     4             var tdArry = $(this).find("td");
     5             fitModelsingle.push("{"VehicleBrandName":"" + tdArry.eq(0).text() + "","VehicleManufacturerName":"" + tdArry.eq(1).text() + "","VehicleSeriesPureName":"" + tdArry.eq(2).text() + "","ModelYear":"" + tdArry.eq(3).text() + "","VehicleModelName":"" + tdArry.eq(4).text() + ""}");
     6         });
    7 //fitModelsingle.join(); 8 //if (fitModelsingle.length != 0) { 9 // var fitModelList = "[" + fitModelsingle + "]";
    11 //}
    var fitModelList = JSON.stringify(fitModelsingle); //以上注释的三句等价于这一句
    console.log(fitModelList);
    12 </script>

     1.3后台传递过来的好多数据都是字符串形式,并且双引号是由&quot 表示,此时要想将格式正确,但是字符有问题的字符串转换为JSON:

      如:后台传入一个list

     list=list.replace(/&quot;/g, '"');
     list= $.parseJSON(mathchingModelList);
    

    输出的list便是JSON数据。  注:用$.parseJSON()需要引入jQuery包。

           

    2、将JSON转化为其他数据类型

       JSON.parse 把一个json字符串解析成对象。

  • 相关阅读:
    h5 穿透滚动
    Safari 导航栏
    浮层滚动问题
    兼容性常规检测
    CORS
    Webpack 一些概念
    01 离散时间信号的时域表示
    03 信道容量
    01 MATLAB基本概念
    02 字斟句酌
  • 原文地址:https://www.cnblogs.com/wangyuanliang/p/3831798.html
Copyright © 2020-2023  润新知