Fastjson阿里巴巴工程師開(kāi)源的一個(gè) json 庫(kù):Fastjson,這個(gè)庫(kù)在解析速度和易用性上來(lái)說(shuō)都很不錯(cuò)。
在日志解析,前后端數(shù)據(jù)傳輸交互中,經(jīng)常會(huì)遇到 String 與 map、json、xml 等格式相互轉(zhuǎn)換與解析的場(chǎng)景,其中 json 基本成為了跨語(yǔ)言、跨前后端的事實(shí)上的標(biāo)準(zhǔn)數(shù)據(jù)交互格式。應(yīng)該來(lái)說(shuō)各個(gè)語(yǔ)言中 解析 json 的庫(kù)都一大片(具體 json 格式與三方庫(kù)的介紹請(qǐng)見(jiàn): http://www.json.org/json-zh.html ),比如 python 都集成在了內(nèi)置庫(kù)中,成為標(biāo)準(zhǔn) API,今天我們要聊的是 java 中如何方便的使用 json 格式。
下面一個(gè)示例是如何使用Fastjson 把對(duì)象或數(shù)組轉(zhuǎn)JSON
package test;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
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;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
};
class UserGroup {
private String name;
private List<User> users = new ArrayList<User>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
@Override
public String toString() {
return "UserGroup [name=" + name + ", users=" + users + "]";
}
}
class FastJsonTest {
public static void main(String[] args) {
// 構(gòu)建用戶(hù)geust
User guestUser = new User();
guestUser.setName("guest");
guestUser.setAge(28);
// 構(gòu)建用戶(hù)root
User rootUser = new User();
rootUser.setName("root");
guestUser.setAge(35);
// 構(gòu)建用戶(hù)組對(duì)象
UserGroup group = new UserGroup();
group.setName("admin");
group.getUsers().add(guestUser);
group.getUsers().add(rootUser);
// 用戶(hù)組對(duì)象轉(zhuǎn)JSON串
String jsonString = JSON.toJSONString(group);
System.out.println("jsonString:" + jsonString);
// JSON串轉(zhuǎn)用戶(hù)組對(duì)象
UserGroup group2 = JSON.parseObject(jsonString, UserGroup.class);
System.out.println("group2:" + group2);
// 構(gòu)建用戶(hù)對(duì)象數(shù)組
User[] users = new User[2];
users[0] = guestUser;
users[1] = rootUser;
// 用戶(hù)對(duì)象數(shù)組轉(zhuǎn)JSON串
String jsonString2 = JSON.toJSONString(users);
System.out.println("jsonString2:" + jsonString2);
// JSON串轉(zhuǎn)用戶(hù)對(duì)象列表
List<User> users2 = JSON.parseArray(jsonString2, User.class);
System.out.println("users2:" + users2);
}
}
輸出結(jié)果:
jsonString:{"name":"admin","users":[{"age":35,"name":"guest"},{"age":0,"name":"root"}]}
group2:UserGroup [name=admin, users=[User [name=guest, age=35], User [name=root, age=0]]]
jsonString2:[{"age":35,"name":"guest"},{"age":0,"name":"root"}]
users2:[User [name=guest, age=35], User [name=root, age=0]]
fastjson通過(guò)各方面測(cè)試都很好,功能性能都是No.1,喜歡,它的源代碼質(zhì)量很高,作者也煞費(fèi)苦心,將性能做到了最好,全面超越其他的json類(lèi)庫(kù)。
通過(guò)fastjson我們可以快速進(jìn)行開(kāi)發(fā)。
更多建議: