JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
什么是 JSON ?
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言 *
JSON 具有自我描述性,更易理解
- JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言
JSON 语法是 JavaScript 语法的子集。
JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
“firstName” : “John”
这很容易理解,等价于这条 JavaScript 语句:
firstName = “John”
JSON 值
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null
JSON 对象
JSON 对象在花括号中书写:
对象可以包含多个名称/值对:
{ “firstName”:“John” , “lastName”:“Doe” }
这一点也容易理解,与这条 JavaScript 语句等价:
firstName = “John”
lastName = “Doe”
JSON 数组
JSON 数组在方括号中书写:
数组可包含多个对象:
{
“employees”: [
{ “firstName”:“John” , “lastName”:“Doe” },
{ “firstName”:“Anna” , “lastName”:“Smith” },
{ “firstName”:“Peter” , “lastName”:“Jones” }
]
}
在上面的例子中,对象 “employees” 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
<script>
//json 对象 { 开始 } 结束
// k是字符串 使用 : 和值分开
// v 是值 (可以是对象.number ,string ...)
// k-v 和k-v 用,隔开;
var jsonObj = {"name":"张三","age":34};
// 通过对象点属性 获取值
console.log(jsonObj.name);
console.log(jsonObj.age);
// json对象可以数组
var jsonObj2 = [10,20,30];
console.log(jsonObj2[1]);
//json 可以嵌套
var jsonObj3 = {
"name":"张三",
"age":34,
"dog":{
"name":"旺财",
"age":2
}
};
// 先拿到 dog 对象
var dogName = jsonObj3.dog.name;
console.log(dogName);
</script>
<script>
// json k 是字符串 可以省略
var json1 = {name:"aa",age:20};
console.log(json1);
console.log(typeof json1); //typeof这个关键字是反应json1的类型
// 把json对象转成字符串
var jsonStr = JSON.stringify(json1);
console.log(jsonStr);
console.log(typeof jsonStr);
//把json字符串转成 json对象
var jsonStr1 = '{"name":"aa","age":20}';
// JSON.parse() 把字符串转成json
var jsonObj = JSON.parse(jsonStr1);
console.log(jsonObj.name + jsonObj.age);
</script>
直接把Java对象发给js前端,js无法识别,
先将java对象转成json字符串 -------》
再将json字符串转成java对象
/**
* 把对象转成 json字符串
*/
public class Demo01 {
public static void main(String[] args) {
//创建一个对象
User u = new User("aa", 34);
//u ==> {"name":"aa","age":34};
StringBuilder sb = new StringBuilder();
sb.append("{").append("\"name\":").append(u.getName()).append("}");
System.out.println(sb.toString());
// 对象转成 json字符串 框架 fastJson 阿里巴巴 产品
// 下载jar 地址 https://mvnrepository.com/
// 把 java对象转成 json字符串
String jsonString = JSON.toJSONString(u);//这里是使用了fastJson的JSON 框架 简化了代码
System.out.println(jsonString);
// 把java集合对象转成 字符串
List<User> list = new ArrayList();
list.add(new User("乔峰", 30));
list.add(new User("段正淳", 35));
list.add(new User("白刀风", 30));
// 统计 JSON.toJSONString(u);
String jsonString2 = JSON.toJSONString(list,true);
System.out.println(jsonString2);
// Gson Google 产品
}
}
/**
* 把 json字符串 转成java对象
*/
public class Demo02 {
public static void main(String[] args) {
//{"age":34,"name":"aa"}
String jsonstr = "{\"age\":34,\"name\":\"aa\"}";
// 把 字符串 直接转成 对象 JSON.parseObject(str,clazz)
User u = JSON.parseObject(jsonstr, User.class);
System.out.println();
String jsonStr2 ="[\r\n" +
" {\r\n" +
" \"age\":30,\r\n" +
" \"name\":\"乔峰\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"age\":35,\r\n" +
" \"name\":\"段正淳\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"age\":30,\r\n" +
" \"name\":\"白刀风\"\r\n" +
" }\r\n" +
"]";
//把 json字符串 转成 java对象
List<User> list = JSON.parseArray(jsonStr2, User.class);
for (User user : list) {
System.out.println(user);
}
}
}
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User() {
// TODO Auto-generated constructor stub
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
//创建一个对象
User u = new User("段正淳", 40);
//创建gson 对象
Gson gson = new Gson();
//通过 gson 把对象转成字符串
String json = gson.toJson(u);
System.out.println(json);
// 把集合转成字符串
List<User> list = new ArrayList<>();
list.add(new User("甘宝宝", 34));
list.add(new User("秦红棉", 35));
list.add(new User("王夫人", 35));
// 把集合转成 json字符串
String json2 = gson.toJson(list);
System.out.println(json2);