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对象序列化为JSONJSON.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?>
阅读全文
0 0
- Json
- JSON
- JSON
- JSON
- json
- JSON
- JSON
- json
- Json
- json
- JSON
- json
- json
- JSON
- json
- JSON
- JSON
- json
- POJ 1440 Varacious Steve 笔记
- Unity调用Win32的打开和保存文件对话框
- linux查看内存使用情况,停掉特定的无用的使用内存较多的进程
- Java的三种代理模式
- 浙大PAT 1064. Complete Binary Search Tree
- JSON
- maven入门
- ORBSLAM2初步探究-笔记本摄像头测试单目
- mysql参数调优
- 从C到C++的升级
- 实现客户端和服务器之间的通信(TCP协议、多线程)
- GoEasy实现弹幕效果
- js判断是否在微信浏览器中打开网页
- JAVA进程占用高内存原因分析与优化方法