JSON

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
?>

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值