JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
Gson:是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
FastJson: 是阿里巴巴提供的一个性能很好的 Java 语言实现的 JSON 解析器和生成器。
import java.util.Objects;
public class MagicPhone {
private String brand;
private String name;
private String info;
private String model;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
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 getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public MagicPhone() {
}
public MagicPhone(String brand, String name, String info, String model) {
this.brand = brand;
this.name = name;
this.info = info;
this.model = model;
}
@Override
public String toString() {
return "MagicPhone{" +
"brand='" + brand + '\'' +
", name='" + name + '\'' +
", info='" + info + '\'' +
", model='" + model + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MagicPhone that = (MagicPhone) o;
return Objects.equals(brand, that.brand) &&
Objects.equals(name, that.name) &&
Objects.equals(info, that.info) &&
Objects.equals(model, that.model);
}
@Override
public int hashCode() {
return Objects.hash(brand, name, info, model);
}
}
一、Gson
1.将对象转换为JSON字符串
import com.google.gson.Gson;
/**
* 用Gson将对象转换为JSON字符串
*/
public class Demo1 {
public static void main(String[] args) {
// 创建Gson对象
Gson g = new Gson();
// 转换
MagicPhone magicPhone = new MagicPhone("华人牌2060款","傻妞","一部来自2060年的手机","喜,怒,哀,乐,羞,乖,酷,坏,愁,傻");
String s = g.toJson(magicPhone,MagicPhone.class);
System.out.println(s);
}
}
结果:
{"brand":"华人牌2060款","name":"傻妞","info":"一部来自2060年的手机","model":"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻"}
Process finished with exit code 0
2.将JSON字符串转换为对象
import com.google.gson.Gson;
/**
* 用Gson将JSON字符串转换为对象
*/
public class Demo2 {
public static void main(String[] args) {
// 创建Gson对象
Gson g = new Gson();
// 转换 {"brand":"华人牌2060款","name":"傻妞","info":"一部来自2060年的手机","model":"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻"}
String s = "{\"brand\":\"华人牌2060款\",\"name\":\"傻妞\",\"info\":\"一部来自2060年的手机\",\"model\":\"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻\"}";
MagicPhone magicPhone = g.fromJson(s,MagicPhone.class);
System.out.println(magicPhone);
System.out.println(magicPhone.getModel());
}
}
结果:
MagicPhone{brand='华人牌2060款', name='傻妞', info='一部来自2060年的手机', model='喜,怒,哀,乐,羞,乖,酷,坏,愁,傻'}
喜,怒,哀,乐,羞,乖,酷,坏,愁,傻
Process finished with exit code 0
3.将JSON数组格式转换为对象
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.List;
/**
* 将JSON数组格式转换为对象
*/
public class Demo3 {
public static void main(String[] args) {
// 创建Gson对象
Gson g = new Gson();
// 转换 {"brand":"华人牌2060款","name":"傻妞","info":"一部来自2060年的手机","model":["喜","怒","哀","乐","羞","乖","酷","坏","愁","傻"]}
String s = "{\"brand\":\"华人牌2060款\",\"name\":\"傻妞\",\"info\":\"一部来自2060年的手机\",\"model\":[\"喜\",\"怒\",\"哀\",\"乐\",\"羞\",\"乖\",\"酷\",\"坏\",\"愁\",\"傻\"]}";
HashMap data = g.fromJson(s,HashMap.class);
List list = (List) data.get("model");
System.out.println(list);
System.out.println(list.get(2));
System.out.println(list.getClass());
}
}
结果:
[喜, 怒, 哀, 乐, 羞, 乖, 酷, 坏, 愁, 傻]
哀
class java.util.ArrayList
Process finished with exit code 0
二、FastJson
1.将对象转换为JSON字符串
将JSON字符串转换为对象
import com.alibaba.fastjson.JSON;
/**
* 用fastJson将对象转换为JSON字符串
* 将JSON字符串转换为对象
*/
public class Demo4 {
public static void main(String[] args) {
//将对象转换为JSON字符串
MagicPhone magicPhone = new MagicPhone("华人牌2060款","傻妞","一部来自2060年的手机","喜,怒,哀,乐,羞,乖,酷,坏,愁,傻");
String s = JSON.toJSONString(magicPhone);
System.out.println(s);
System.out.println("-------------------------------------------------------------");
//将JSON字符串转换为对象
String json = "{\"brand\":\"华人牌2060款\",\"name\":\"傻妞\",\"info\":\"一部来自2060年的手机\",\"model\":\"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻\"}";
MagicPhone m = JSON.parseObject(json,MagicPhone.class);
System.out.println(m);
System.out.println(m.getModel());
}
}
结果:
{"brand":"华人牌2060款","info":"一部来自2060年的手机","model":"喜,怒,哀,乐,羞,乖,酷,坏,愁,傻","name":"傻妞"}
-------------------------------------------------------------
MagicPhone{brand='华人牌2060款', name='傻妞', info='一部来自2060年的手机', model='喜,怒,哀,乐,羞,乖,酷,坏,愁,傻'}
喜,怒,哀,乐,羞,乖,酷,坏,愁,傻
Process finished with exit code 0
2.将JSON数组格式转换为对象
import com.alibaba.fastjson.JSON;
import java.util.List;
/**
* 用fastJson将JSON数组格式转换为对象
*/
public class Demo5 {
public static void main(String[] args) {
//转换 ["喜","怒","哀","乐","羞","乖","酷","坏","愁","傻"]
String s = "[\"喜\",\"怒\",\"哀\",\"乐\",\"羞\",\"乖\",\"酷\",\"坏\",\"愁\",\"傻\"]";
List<String> data = JSON.parseArray(s,String.class);
System.out.println(data);
System.out.println(data.get(2));
}
}
结果:
[喜, 怒, 哀, 乐, 羞, 乖, 酷, 坏, 愁, 傻]
哀
Process finished with exit code 0