JSON

来源:互联网 发布:淘宝店铺刷流量软件 编辑:程序博客网 时间:2024/06/08 04:33

JSON是Javascript Object Notation,意为Javascript对象表示法。它是javascript的严格子集。它是一种数据格式,并不是一种编程语言。但JSON并不从属于JavaScript,它具有很强的跨平台性。

JSON可以表示字符串,数值,布尔值,和Null,但无法表示JS的特殊值undefined。还可以表示对象和数组。

  • 数字:直接用数字表示。如2

  • 字符串:必须使用双引号。如"name"

  • 对象:直接用数字表示。

    JS对象

    var person = {    name: '麦兜',    age: 3};

    JS的另一种表示

    var person = {    "name": "麦兜",    "age": 3};

    JSON表示

    {    "name": "麦兜",    "age": 3}

    区别:JSON对象没有声明变量,在对象的末尾没有分号。

    JSON对象的复杂表示

    {    "name": "麦兜",    "age": 3"school": {        "name": "春田花花幼稚园",        "location": "HONGKONG"    }}
  • 数组

    JS数组的字面量表示

    var arr = [3, '麦兜', true];

    JSON一维数组

    [3, "麦兜", true]

    JSON二维数组

    [[3, "麦兜", true],  [5, "加菲猫", false]]

更复杂的JSON数据

[    {        "title": "平凡的世界",        "author": [            "路遥"        ],        "edition": 3,        "year": 1987    },    {        "title": "百年孤独",        "author": [            "加西亚·马尔克斯"        ],        "edition": 2,        "year": 1907    },    {        "title": "世界通史",        "author": [            "不详"        ],        "edition": 2,        "year": 1999    }]

支持JSON的语言基本都提供了能够解析JSON和序列化。

JS中的JSON

有两个方法,stringify()parse()

  • JSON.stringify()用于将JS对象序列化为JSON

  • JSON.parse()用于将JSON字符串解析为原生JS值

stringify方法

语法:

JSON.stringify(value[, replacer[, space]])
  • value 需要序列化的js对象
  • replacer 可选。它是一个过滤器,可以是函数,也可以是数组。使用函数时,接收两个参数,一个是属性一个是属性值,也就是键和值。使用函数的返回值作为需要转换的属性的属性值,如果返回undefine,则排除这个值。如果是一个数组,那么只转换该数组中所具有的键值的值。
  • space 可选。表示是否为文本添加缩进。如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 有可以使用非数字,如:\t

parse方法

语法:

JSON.parse(value[, reviver])
  • value JSON对象
  • reviver 可选。还原函数

PHP中的JSON

序列化json_encode、解析json_decode

json_encode语法

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
  • value 需要转换的数据。但不能为resouce类型。所有字符串数据的编码必须是 UTF-8。
  • $options 可选。一些配置常量
  • depth 可选。设置最大深度。 必须大于0。

json_decode语法

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
  • $json json字符串
  • assoc 设置为true时返回一个数组。若不设置将返回一个对象。
  • depth 指定递归深度
  • options JSON解码的掩码选项。JSON解码的掩码选项。 现在有两个支持的选项。 第一个是JSON_BIGINT_AS_STRING, 用于将大整数转为字符串而非默认的float类型。第二个是 JSON_OBJECT_AS_ARRAY, 与将assoc设置为 TRUE 有相同的效果。

JSON实例

html

<form>        <p>            <label>用户名</label>            <input type="text" name="" id="username">        </p>        <p>            <label>密码</label>            <input type="password" name="" id="password">        </p>        <p>            <label>电话</label>            <input type="text" name="" id="telephone">        </p>        <p>            <input type="submit" name="" id="submit" value="提交">        </p>    </form>

JS

$(document).ready(function(){    $('#submit').on('click',function(){        var username = $('#username').val();        var psw = $('#password').val();        var tel = $('#telephone').val();        $.ajax({            url: '../form.php',            type: 'POST',            data: {                username: username,                password: psw,                telephone: tel            },            success: function(response){                var arr = $.parseJSON(response); //将收到的json字符串转为对象                console.log(arr);            }        })        .done(function() {            console.log("success");        })        .fail(function() {            console.log("error");        })        .always(function() {            console.log("complete");        });    });});

PHP

<?php    header('Content-type:text/html;charset:utf-8');    $username = $_POST['username'];    $password = $_POST['password'];    $telephone = $_POST['telephone'];    $arr = array(            'username' => $username,            'password' => $password,            'telephone' => $telephone        );    $json = json_encode($arr); //生成一个json对象    echo $json; //返回这个json?>

这里写图片描述