JSON和JAVA物件之間的轉換小結
阿新 • • 發佈:2018-11-27
JSON(JAVAScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式。它基於歐洲計算機協會制定的js規範的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。
1.為了便於轉換,需要匯入一些包(網上容易找到)。
2. 具體轉換如下:
(1)將JAVA物件轉換為JSON物件
//1.將JAVA物件轉換為JSON物件 User user = new User("張三","男",18); //轉化 JSONObject jsonObject = JSONObject.fromObject(user); //將JSON物件轉字串輸出 System.out.println(jsonObject.toString());
輸出內容為:{"age":18,"name":"張三","sex":"男"}
(2)將JSON字元轉換為JAVA物件
//2.將JSON字元轉換為JAVA物件 String useStr = jsonObject.toString(); JSONObject jsonobject = JSONObject.fromObject(useStr); User newUse = (User)JSONObject.toBean(jsonObject,User.class); System.out.println(newUse.toString());
輸出內容為:name:張三 sex:男 age:18(便於觀察,此處重寫了toString())
(3)將JAVA物件集合轉換為JSON物件陣列
// 3.將JAVA物件集合轉換為JSON物件陣列 // 生成JAVA物件集合 List<User> userList = new ArrayList<User>(); User user1 = new User("李四", "男", 17); User user2 = new User("王五", "男", 18); userList.add(user1); userList.add(user2); // 轉化 JSONArray jsonArray = JSONArray.fromObject(userList); // 將JSON物件陣列轉字串輸出 System.out.println(jsonArray.toString());
輸出內容為:[{"age":17,"name":"李四","sex":"男"},{"age":18,"name":"王五","sex":"男"}]
(4)將JSON字串轉換為JAVA物件陣列
// 4.將JSON字串轉換為JAVA物件陣列
String userListStr = jsonArray.toString();
JSONArray jsonArray2 = JSONArray.fromObject(userListStr);
List<User> users = (List<User>) JSONArray.toCollection(jsonArray2, User.class);
for (User tempUser : users) {
System.out.println(tempUser.toString());
}
輸出內容為:name:李四 sex:男 age:17
name:王五 sex:男 age:18
User類如下:
package com.jsontest.model;
public class User {
private String name;
private String sex;
private int age;
public User() {
super();
}
public User(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "name:"+this.name+"\t"+"sex:"+this.sex+"\t"+"age:"+this.age;
}
}