概述:
json:JavaScript对象表示法(JavaScript Object Notation)
- JSON存储和交换文本信息的语法,类似XML
- JSON比XML更小,更快,更易解析
- JSON独立语言
- 是轻量级的文本数据交换格式
语法规则
- 数据在名称/值对 中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 名称/值对
书写格式:名称/值对
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
"firstName" : "John"
等价于JavaScript语句:firstName = “John”
JSON值
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true或false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
JSON对象
JSON对象在花括号中书写
对象可以包括多个名称/值对
{"firstName":"John" , "lastName":"Doe"}
JSON数组
数组在方括号中书写
{
"employees" : [
{"firstName":"John" , "lastName":"Doe"},
{"firstName":"Anna" , "lastName":"Smith"},
{"firstName":"Peter" , "lastName":"Jones"}
]
}
JSON使用
eval() 可用于将JSON文本转换为JavaScript对象
必须把文本包围在括号中
var obj = eval("("+txt+")");
JSON解析器
使用JSON解析器将JSON转换为JavaScript对象是更安全的做法
JSON解析器只能识别JSON文本,而不会编译脚本
@RequestBody
前端发送复杂JSON数据,后端使用@RequestBody接收
前端发送的JSON数据,除了普通的键值对,还有键-对象 如:roles:{id:4}
* JSON属性如下
* loginName: "jay"
* password : "3333"
* roles : { id : 4 }
* user : { name:"username" , officeName : "java"}
* ---------------------------------------------------------
* Java实体如下
* MyEntity
* String loginName
* String password
* RoleEntity roles RoleEntity中有一个id属性接收
* UserEntity user UserEntity中有name 、 officeName 属性接收
//在Controller中
@RequestMapping
public JsonResponse handerSomething(@RequestBody MyEntity myentity)
@RestController =@ResponseBody+@Controller