zoukankan      html  css  js  c++  java
  • JSON概述

    概念区分:

    1.JSON:(JavaScript Object Notation,js对象表示法);

    2.JSON是为了数据交换设计的一种数据格式,而不是一种编程语言、有两个API、是一个JS对象;

    3.JSON与js具有相同的语法格式,但是JSON并不从属于js;JSON 与 JS 的联系在于 JSON 使用了相同的语言层面表示,就是说你用 JS 写一个对象,与转换成的 JSON 字符串是相同的;

    4.并非只有js才使用JSON,很多编程语言都有针对JSON的解析器和序列化器;

    5.JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值;

    6.JS 中 JSON 的两个转化方法分别是JSON.stringifyJSON.parse。

    语法:

    JSON的语法可以表示以下三种类型的值:

    • 1.简单值;
    • 2.对象;
    • 3.数组。

    举例说明:

    1.简单值:

     1 5//这是JSON表示数值5的方式; 2 "Hello world"//JSON表示字符串的过程  

    区别:

    1)js字符串与JSON字符串的最大区别:JSON字符串必须使用双引号(单引号会导致语法错误);

    2)布尔值与null也是有效的JSON形式。

    2.对象:

    ①js中的对象字面量(是不是自己内心想象的JSON对象?key:value形式,Wrong!

      var person = { name:"王五", age:22 4 } 

    ②JSON中的对象要求给属性加引号

    所以上面的的对象字面量又可以这样表示:

    1 var person = { 
    2     "name":"王五",  
    3     "age":22};

    JSON表示上述对象的方式如下:

    1 { 
    2     "name":"王五",  
    3      "age":22
    4 }

    对比一下,有区别吗?

    1.JSON中没有变量的概念,故并没有声明变量;

    2.末尾没有分号。

    谨记:对象的属性必须加双引号。

    3.数组:

    JSON数组采用JS中的数组字面量形式。

    1 var values = [25,"hello",true];//js中的数组字面量
    1 [25,"hello",true]    //JSON中的数组表示

    果然,JSON数组中既没有变量也没有分号。


     解析与序列化

    1.JSON.stringify();

    2.JSON.parse();

    3.toJSON.

    是不是耳熟能详的方法?还好有机会重温一下,也好改正自己的短处:

            1.JSON对象有两个方法:stringify()以及parse(),其实就是把js对象序列化为JSON字符串和把JSON字符串解析为原生js值。默认情况下,JSON.stringify()输出的JSON字符串不包含任何的空格字符串或缩进;

            2.当JSON.stringify()

    接受一个参数的时候(上述情景),JSON就是把js对象序列化为JSON字符串;

    当JSON.stringify()接受两个参数,且第二个参数为数组的时候,代表结果中只包含数组中列出的属性;而当第二个参数为函数时,情况稍微有点不一样,函数返回的值就是相应键的值。不过,当函数返回undefined,那么相应的属性会被忽略即被删除;

    当其接受三个参数的时候,第三个参数用于控制结果中的缩进和空白符。

    小结:

    JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工具量。

    JSON vs js:JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串

    在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。
     
    但是对象和数组是比较特殊且常用的两种类型。
     
    对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
     
    数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。

    《JavaScript高级程序设计》:563-570页。

  • 相关阅读:
    pycharm 快捷键
    jquery .on
    javaweb项目的优化
    python笔记
    git上解决代码冲突(merge版)
    OpenERP里面继承的用法
    OpenERP新手易犯错误之res.model
    bootstrap 仿实例
    深入理解Binder(二),Binder是什么?
    深入理解Binder(一),从AIDL谈起
  • 原文地址:https://www.cnblogs.com/zhengyeye/p/8934528.html
Copyright © 2011-2022 走看看