JSON

作者: yytyff | 来源:发表于2017-04-16 11:31 被阅读0次

    JSON

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。

    语法

    JSON 语法是 JavaScript 对象表示语法的子集。

    数据在名称/值对中
    数据由逗号分隔
    花括号保存对象
    方括号保存数组
    JSON 数据的书写格式是:名称/值对,名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

    var json1 = {"name": "Byron", "age": "24"}
    
    var json2 = [
        {"name": "Byron", "age": "24"}, 
        {"name": "Byron2", "age": "25"}
    ]
    

    形式

    对象是一个无序的“名称/值对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值对”之间使用“,”(逗号)分隔。

    数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

    值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

    demo

    {
         "firstName": "John",
         "lastName": "Smith",
         "sex": "third",
         "age": 25,
         "address": 
         {
             "streetAddress": "21 2nd Street",
             "city": "New York",
             "state": "NY",
             "postalCode": "10021"
         },
         "phoneNumber": 
         [
             {
               "type": "home",
               "number": "212 555-1234"
             },
             {
               "type": "fax",
               "number": "646 555-4567"
             }
         ]
     }
    

    json和字符串转化

    原生支持

    IE以上浏览器都支持了一个对象JSON,JSON对象主要有两个『静态』函数

    parse:把字符串转化为JSON对象
    stringify:把JSON对象转化为字符串(出人意料的不叫toString,因为不是实例方法)

    var json = {
      "name": "Byron",
      "age": 24
    };
    
    var json_str = JSON.stringify(json);
    console.log(json_str);
    console.log(JSON.parse(json_str));
    

    eval

    邪恶的eval出现了,以前很多人图省事用eval把字符串转为json

    var json_str = '{"name": "Byron", "age": 24}';
    
    var json = eval('(' + json_str + ')');加括号,相当于表达式
    
    console.log(json);
    

    json2

    业界有了个兼容低版本IE的JSON解决方案,对浏览器有要求的可以尝试

    相关作业

    1.写一个函数,统计字符串里出现出现频率最多的字符

    var str ='hello world , jiengu haha hoho hoho lol'
    var dict = {}
    for (var i = 0; i < str.length; i++) {
        if(dict[str[i]]) {
            ++dict[str[i]]
        }else{
            dict[str[i]] = 1
        }
    }
    var count= 0
    var maxValue
    for(key in dict){
        if(dict[key] > count){
            maxValue = key
            count = dict[key]
        }
    }
    console.log(maxValue,count)
    

    2.写一个camelize函数,把my-short-string形式的字符串转化成
    myShortString形式的字符串,如

    function camelize(str){
        var arr = str.split('-');
        var newArr = arr[0];
        for (var i = 1; i < arr.length; i++) {
            newArr += arr[i].charAt(0).toUpperCase() 
            + arr[i].slice(1,arr[i].length);
        }
        return newArr;
    }   
    
    console.log(camelize("background-color"));
    console.log(camelize("list-style-image"));
    
    camelize("background-color") == 'backgroundColor'
    camelize("list-style-image") == 'listStyleImage'
    

    3.写一个 ucFirst函数,返回第一个字母为大写的字符 (***)

    var str= 'hello';
    function ucFirst(str){
        
        var str1 = str.charAt(0).toUpperCase();
        var str2 = str.slice(1);
        return str1 + str2;
    }
    
    ucFirst(str);
    
    ucFirst("hunger") == "Hunger"
    

    4.写一个函数truncate(str, maxlength), 如果str的长度大于maxlength,会把str截断到maxlength长,并加上...,如

    function truncate(str,maxLength){
        var strLength = str.length;
        var newStr;
        if(str.length > maxLength){
            newStr = str.slice(0,maxLength) + "...";
        } else{
            newStr = str;
        }
        return newStr;
    }
    
    truncate("hello, this is hunger valley,", 10)) == "hello, thi...";
    truncate("hello world", 20)) == "hello world"
    
    

    相关文章

      网友评论

          本文标题:JSON

          本文链接:https://www.haomeiwen.com/subject/urkaattx.html