JSON简介
- JSON: JavaScript Object Notation(JavaScript 对象表示法);轻量级数据交换格式、非常适合于服务器与 JavaScript 的交互。
- JSON就是不同系统之间、前后端之间、不同语言之间进行数据交互所遵守的一种数据的格式。
JSON语法
1、JSON语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
- 数据在键/值对中
- 数据由逗号分隔
- 大括号保存对象
- 中括号保存数组
json格式:
- 对象和Map 转换成
{key:value , key:value,...}
- 数组和集合转换成
[e1,e2,e3,...]
- JSON格式可以嵌套
2、JSON 键/值对
JSON 数据的书写格式是:键/值对。
键/值对:包括字段名称(在双引号中),后面写一个冒号,然后是值:
{“name” : “value-ityg”}
这很容易理解,等价于这条 JavaScript 语句:
name = “value-ityg”
2、JSON 值
JSON 的值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
在javascript语言中怎么创建一个json对象呢?语法是什么?
var jsonObj = {
“属性名1” : 属性值,
“属性名2” : 属性值,
“属性名3” : 属性值,
};
注意:属性名必须是字符串
JSON格式转换
前端JS对象与JSON格式转换
- JS对象转换成JSON格式字符串
//创建JS对象
var obj = {stuNum:"10001",stuName:"张三"};
obj.stuGender = "男";
//将JS对象转换成json格式字符串
var jsonStr = JSON.stringify(obj);
- 将JSON格式字符串转换成JS对象
//方式一:注意这个方法需要在两边加上一个小括号
var obj2 = eval("("+jsonStr+")");
//方式二
var jsonObj = JSON.parse(jsonStr);
后端Java对象与JSON格式转换
需使用JSON工具:FASTJson、GSon 、JackSon
- 使用FastJson:
//创建一个User对象
User libai = new User("李白", 10000, "喝酒");
// 将以上的User对象转换成json格式的字符串
// 使用阿里巴巴的fastjson组件中的JSON类即可,调用toJSONString(Object obj)方式。
String jsonStr = JSON.toJSONString(libai);
// List集合是否可以转换成数组
ArrayList<User> users = new ArrayList<>();
User hanxin = new User("韩信", 1434, "刷枪");
users.add(libai);
users.add(hanxin);
String jsonStr2 = JSON.toJSONString(users);
//把获取的数据,通过网络传给ajax中的异步对象,响应结果数据
//指定服务器端(servlet)返回给浏览器的是json格式的数据,json数据使用utf-8编码的
response.setContentType("application/json;charset=utf-8");
response.getWriter().println(jsonStr2);//输出数据---会付给ajax中 responseText属性
- 使用GSon:
//将json格式字符串转换成Java对象
//要求:json格式的字符串中的key 要和目标Java对象属性一致
Gson gson = new Gson();
Student student = gson.fromJson(str, Student.class);
//将Java对象转换成JSON格式
Student stu2 = new Student("10006","Lucy","女");
String jsonStr = gson.toJson(stu2);