目录
简介
JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式
指的就是客户端与服务器,程序与程序在数据进行交换时的一种格式
Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言
对象格式
JSON:
{
"name":"金苹果",
"info":"种苹果"
}
一个对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性
(可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解
析.)
键值对的值, 可以是JS中的任意类型的数据
数组格式
在JSON格式中可以与对象互相嵌套
[元素1,元素2...]
案例:
{
"name":"何曾洛",
"age":18,
"pengyou":["张三","李四","王二","麻子",{
"name":"野马老师",
"info":"像匹野马一样狂奔在技术钻研的道路上"
}],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}
Java与Json
做什么?
将Java中的对象 快速的转换为 JSON格式的字符串.
将JSON格式的字符串, 转换为Java的对象.
Gson
将对象转换为JSON字符串
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
案例:
Book b = BookDao.find();
String json = new Gson().toJson(b);
System.out.println(json);
将JSON字符串转换为对象
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class
案例:
String json = "{\"id\":1,\"name\":\"金苹果\",\"author\":\"何曾洛 \",\"info\":\"嘿嘿嘿嘿嘿嘿\",\"price\":198.0}";
Book book = new Gson().fromJson(json, Book.class);
System.out.println(book);
代码演示:
package com.java;
import com.google.gson.Gson;
public class demo {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换
book b = new book("金苹果","种苹果","1001");
String s = g.toJson(b);
System.out.println(s);
}
}
转回来
package com.java;
import com.google.gson.Gson;
public class demo2 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换{"name":"金苹果","info":"种苹果","id":"1001"}
book b = g.fromJson("{\"name\":\"金苹果\",\"info\":\"种苹果\",\"id\":\"1001\"}",book.class);
System.out.println(b.getId());
}
}
book类
package com.java;
import java.util.Objects;
public class book {
private String name;
private String info;
private String id;
public book() {
}
public book(String name, String info, String id) {
this.name = name;
this.info = info;
this.id = id;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
book book = (book) o;
return Objects.equals(name, book.name) &&
Objects.equals(info, book.info) &&
Objects.equals(id, book.id);
}
@Override
public int hashCode() {
return Objects.hash(name, info, id);
}
@Override
public String toString() {
return "book{" +
"name='" + name + '\'' +
", info='" + info + '\'' +
", id='" + id + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
FastJson
将对象转换为JSON字符串
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
案例:
Book b = BookDao.find();
String json=JSON.toJSONString(b);
System.out.println(json);
将JSON字符串转换为对象
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class); 或 List list=JSON.parseArray(JSON字符串,类型.class);
案例:
String json = "{\"id\":1,\"name\":\"金苹果\",\"author\":\"何曾洛 \",\"info\":\"嘿嘿嘿嘿嘿嘿\",\"price\":198.0}";
Book book = JSON.parseObject(json, Book.class);
System.out.println(book);
代码演示:
package com.java;
import com.alibaba.fastjson.JSON;
public class demo3 {
public static void main(String[] args) {
book b = new book("金苹果","床前明月光,疑是地上霜,举头望明月,低头思故乡","1001");
String s = JSON.toJSONString(b);
System.out.println(s);
}
}
转换回来
package com.java;
import com.alibaba.fastjson.JSON;
import java.util.List;
public class demo4 {
public static void main(String[] args) {
//{"id":"1001","info":"床前明月光,疑是地上霜,举头望明月,低头思故乡","name":"金苹果"}
//转换对象
book b = JSON.parseObject("{\"id\":\"1001\",\"info\":\"床前明月光,疑是地上霜,举头望明月,低头思故乡\",\"name\":\"金苹果\"}", book.class);
System.out.println(b.getInfo());
//转换数组
//["一二三","四五六","七八九"]
List<String> strings = JSON.parseArray("[\"一二三\",\"四五六\",\"七八九\"]", String.class);
System.out.println(strings.get(1));
}
}
book类,见上面
文章评论