json总结
程序员文章站
2022-03-10 08:24:18
...
所谓JSON(JavaScript Object Notation, JS 对象标记) ,它是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据;类似 XML,但是JSON 比 XML 更小、更快,更易解析。
/*************************************************************************
* File Name: json.c
* Author: The answer
* Function: Other
* Mail: [email protected]
* Created Time: 2017年07月11日 星期二 14时17分35秒
************************************************************************/
本文总结自《JSON必知必会》
JSON(JavaScript Object Notation)的全称是:javascript对象表示法
{
"brand":"adidas",
"color":"red",
"price":1222,
"size":9
}
# 名称--值对 /键值--对 等等.....
json中的值对可以是:strng字符串、数字、null、数组或对象;
Json中”名称“始终都是在左边,而值对是在右边,中间用冒号:来分隔名称和键值;
---------------------------------------------
(2) 名称:"animal" or "the animal"都是合法的,而且中间还可以使用单引号:
eg: "this's animal":"dog" --->但是不建议这么的去做,因为这些特殊的字符会影响到
json对象在系统之间的可移植性;为了提高json数据在各平台间的可移植性,最好不要使用
空格和特殊字符;
(3) 注意,名称是必须要用双引号,而值不一定,因为json中的值可以有很多种,比如
数字、数组、null、bool、而若用的是字符串,则必须用双引号;
(4) 使用{}来表示使之成为一个对象,json中若有多个"名称--值对"的话,应该用","来
将其进行分隔;
(5) json错误验证和校验工具: JSON Formatter & Validator,带高亮语法错误提示;
JSON Editor Online; JSONLint;
(6) 专业术语和概念
字面量:指的是字面意思与其想要表达的意思是完全一致的值。
(7) 计算机中的数据类型:原始数据类型(基础数据类型)和复合数据类型(派生数据类型)
(8) json中的数据类型:对象,字符串,数字,数组,null和bool(布尔值)
(9) json中的数字可以是:整数、小数、负数、指数
---------------------------------------------
(1) json中对象是可以嵌套使用的,eg:
{
"Person":{
"name":"lixiaogang",
"heigh": 176,
"head":{
"hair":{
"color":"light blood",
"length":"short",
"style":"A-line"
},
"eyes":"black"
}
}
}
(2) json中的字符串类型可以是由任意的unicode字符构成;
(3) json中有时候"值对"有时候不得不包含着一对"双引号",如:
{
"promo":"Say "the dog is best" " //这时候会报错,编译器读到the前面的双引号就会
//认为Say这个值对已经结束,而后面的是非法,解决方法是使用"\"转业符号;
"promo":"Say \"the dog is best\" "
}
(4) json中的布尔类型:仅使用小写的字面值 false or true
(5) json中的null类型:若想表达某样东西"无",请使用null并且小写,不要使用0
(6) json中的数组类型:
{
"appleCarton":[
"apple", //一个数组为每一个"位置"都赋予了一个索引,下标0
"apple",
"apple", //若吃掉这个apple,为null,但是为0也不会报错,但不建议这么做
"apple",
"apple",
"apple",
"apple",
"apple",
"apple",
"apple"
]
}
数组里面还可以再嵌套数组;如:
{
"test":[
[
true,
true,
true,
true
],
[
true,
false,
true,
false,
]
]
}
-------------------------------------------------
(1) json中的安全问题
跨站请求伪造 CSRF
比如:
[
{
"username":"user"
},
{
"password":"passwd" --->容易被攻击--> 黑客绕过<script>标签
}
]
解决方案:将数组放到一个对象之中,使之成为一个非法的javascript,
这样就不会被<script>标签加载
I.步
{
"info":[
{
"username":"user"
},
{
"password":"passwd"
}
]
}
II.步
仅使用POST请求获取数据,禁止使用GET;POST and GET是HTTP提供的用于与服务器交换
数据的两种方式;GET用于"请求数据,得到相应";而POST用于"提交数据,得到相应";
结论:避免资源泄露、窃取: 1.不要在JSON中使用*数组
2.不要贪图使用GET来代替POST的便利
(2)注入攻击
注入攻击包含许多种形式与格式;它们都是利用系统本身的漏洞来实现的;而CSRF则是利用
信任机制进行的攻击。注入攻击则主要通过向网站注入恶意代码来实现;
(3) 跨站脚步攻击
XSS是"注入攻击的一种";
---------有关具体的攻击的详细信息和过程,需结合javascript来理解----------
上一篇: PHP使用消息队列ActiveMQ
下一篇: 深入了解一下Redis的内存模型