概述:

json:JavaScript对象表示法(JavaScript Object Notation)

  • JSON存储和交换文本信息的语法,类似XML
  • JSON比XML更小,更快,更易解析
  • JSON独立语言
  • 是轻量级的文本数据交换格式

语法规则

  • 数据在名称/值对 中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 名称/值对

书写格式:名称/值对

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

  1. "firstName" : "John"

等价于JavaScript语句:firstName = “John”

JSON值

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true或false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

JSON对象

JSON对象在花括号中书写

对象可以包括多个名称/值对

  1. {"firstName":"John" , "lastName":"Doe"}

JSON数组

数组在方括号中书写

  1. {
  2. "employees" : [
  3. {"firstName":"John" , "lastName":"Doe"},
  4. {"firstName":"Anna" , "lastName":"Smith"},
  5. {"firstName":"Peter" , "lastName":"Jones"}
  6. ]
  7. }

JSON使用

eval() 可用于将JSON文本转换为JavaScript对象

必须把文本包围在括号中

  1. var obj = eval("("+txt+")");

JSON解析器

使用JSON解析器将JSON转换为JavaScript对象是更安全的做法

JSON解析器只能识别JSON文本,而不会编译脚本

@RequestBody

前端发送复杂JSON数据,后端使用@RequestBody接收

前端发送的JSON数据,除了普通的键值对,还有键-对象 如:roles:{id:4}

  1. * JSON属性如下
  2. * loginName: "jay"
  3. * password : "3333"
  4. * roles : { id : 4 }
  5. * user : { name:"username" , officeName : "java"}
  6. * ---------------------------------------------------------
  7. * Java实体如下
  8. * MyEntity
  9. * String loginName
  10. * String password
  11. * RoleEntity roles RoleEntity中有一个id属性接收
  12. * UserEntity user UserEntity中有name officeName 属性接收
  1. //在Controller中
  2. @RequestMapping
  3. public JsonResponse handerSomething(@RequestBody MyEntity myentity)

@RestController =@ResponseBody+@Controller