在java中常用阿里巴巴的fastjson 和谷歌Gson进行json文件的解析和序列化。
为java项目添加解析json的jar包
maven仓库地址: https://mvnrepository.com/
选择一个合适的版本,且选择包依赖,如这里我选择的是maven依赖,复制(注意不要复制第一行被注释的内容)
复制好之后
打开项目设置,点击+,并选择从maven添加,将之前代码粘贴上即可自动下载好jar包
Json的序列化和反序列化
实体类
public class User {
private String name;
private String passwold2;
public User(){
}
public User(String name, String passwold2, String email) {
this.name = name;
this.passwold2 = passwold2;
this.email = email;
}
public String getPasswold2() {
return passwold2;
}
public void setPasswold2(String passwold2) {
this.passwold2 = passwold2;
}
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "姓名:"+name+"\n密码:"+getPasswold2()+"\n电子邮箱:"+email;
}
}
import java.util.List;
class Student{
private int id;
private int age;
private String name;
private int[] data;
private List<User> userList;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int[] getData() {
return data;
}
public void setData(int[] data) {
this.data = data;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
fastJson的使用
public class Start {
public static void main(String[]args){
// String jsonString="{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"[email protected]\"}";
// JSONObject json2 = JSONObject.toJSON(jsonString);
// User user = new User();
// user.setName(json2.getString("name"));
// user.setPasswold(json2.getString("password"));
// user.setEmail(json2.getString("email"));
// System.out.println(user.toString());
//序列化基础
System.out.println("------------------序列化-----------");
User user=new User();
user.setName("校长");
user.setPasswold2("10000");
user.setEmail("[email protected]");
String jsonString0= JSON.toJSONString(user);
System.out.println(jsonString0);
//序列化进阶
Student student=new Student();
student.setId(1);
student.setAge(16);
student.setName("小明");
student.setData(new int[]{1,2,3});
User user00=new User("A","A1","100@");
User user01=new User("B","A2","600@");
List<User> userList=new ArrayList<>();
userList.add(user00);
userList.add(user00);
userList.add(user01);
student.setUserList(userList);
String jsdata=JSON.toJSONString(student);
System.out.println(jsdata);
System.out.println("------------------反序列化-----------");
//反序列化
String jsondata="{\"name\":\"小白\",\"passwold2\":\"100000\",\"email\":\"[email protected]\"}";
User user1=JSON.parseObject(jsondata,User.class);
System.out.printf(user1.toString());
//反序列化进阶
Student student1=JSON.parseObject(jsdata,Student.class);
for (User var:student1.getUserList()) {
System.out.printf(var.toString());
}
//使用JSONObject解析json
JSONObject jsonObject=JSON.parseObject(jsondata);
String name=jsonObject.getString("name");
String passwold2=jsonObject.getString("passwold2");
String email=jsonObject.getString("email");
System.out.printf("\nname=%s\npasswold=%s\nemail=%s",name,passwold2,email);
}
}
Gson的使用
/**
* Gson解析json
* 作者:Ai
* 时间:2018年5月4日22:09:37
*/
public class Domain {
public static void main(String[] args){
String jsondata="{\"name\":\"小白\",\"passwold2\":\"100000\",\"email\":\"[email protected]\"}";
Gson gson = new Gson();
User user2 = gson.fromJson(jsondata,User.class); //将其转化为类的对象
System.out.println("name is : "+ user2.getName());
System.out.println("passwold is : "+ user2.getPasswold2());
System.out.println("email is :"+user2.getEmail());
// jiexiJson();
Student student2=new Student();
student2.setId(1);
student2.setName("小明");
student2.setAge(19);
student2.setData(new int[]{11,22,33});
List<User> userList=new ArrayList<>();
userList.add(new User("A","A11","100@"));
userList.add(new User("B","B11","200@"));
userList.add(new User("C","C11","300@"));
userList.add(new User("C","C11","300@"));
student2.setUserList(userList);
//序列化
String js = gson.toJson(student2);
System.out.println(js);
//反序列化
Student student=gson.fromJson(js,Student.class);
System.out.println("id="+student.getId());
System.out.println("name="+student.getName());
System.out.println("age="+student.getAge());
System.out.println("data="+student.getData()[0]);
//JsonObject 的使用
JsonObject jsonObject= gson.fromJson(js,JsonObject.class);
//取得元素
JsonElement name= jsonObject.get("name");
//取得值
System.out.println(name.getAsString());
}
/**
* JsonReader解析json
*/
static void jiexiJson(){
String jsondata="{\"name\":\"小白\",\"passwold2\":\"100000\",\"email\":\"[email protected]\"}";
JsonReader json=new JsonReader(new StringReader(jsondata));
try {
json.beginArray();
while(json.hasNext())
{
json.beginObject();
while(json.hasNext())
{
String temp = json.nextName();
if(temp.equals("name"))
{
System.out.println("name is : " + json.nextString());
}
else if(temp.equals("passwold2"))
{
System.out.println("age is: "+ json.nextString());
}
else if (temp.equals("email")){
System.out.println("email is: "+json.nextString());
}
}
json.endObject();
}
json.endArray();
}
catch (Exception e){
e.printStackTrace();
}
}
}