使用FastJson進行JSON編解碼
阿新 • • 發佈:2019-01-08
fastjson.jar 是阿里巴巴開發的Java下快速進行JSON編解碼的工具包,方便使用。
1.編碼
把object的內容編碼成為json格式。
1.1 自定義data類編碼成json格式。
如果資料型別是常用的,可以寫成一個類,生成getter setter constructor,然後輕鬆利用JSON.toJSONString
進行編碼。
//class user
class User{
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = 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;
}
}
User u = new User("archmage", 19);
System.out.println(JSON.toJSONString(u));
//程式輸出
{"age":19,"name":"archmage"}
1.2 利用HashMap編碼json格式。
有時候臨時需要構造json格式,但又不是常用的固定data資料時,可以使用HashMap進行編碼,構造一個HashMap<String, Object>
然後呼叫JSON.toJSONString
HashMap<String, Object> hm = new HashMap<>();
hm.put("name", "archmage");
hm.put("age", 18);
List<String> hobbies = new ArrayList<String>();
hobbies.add("football");
hobbies.add("pingpong");
hobbies.add("basketball");
hm.put("hobby", hobbies);
System.out.println(JSON.toJSONString(hm));
//程式輸出
{
"name": "archmage",
"age": 18,
"hobby": [
"football",
"pingpong",
"basketball"
]
}
2.解碼
2.1 解碼到data類
使用JSON.parseObject
解碼json字串到data類
String str = "{\"age\":19,\"name\":\"archmage\"}";
User u = JSON.parseObject(str, User.class);
System.out.println(u.toString());
//程式輸出
User{name='archmage', age=19}
2.2 解碼到HashMap
在沒有建立data類的時候,如果需要進行泛型解析,可以將json字串解析到一個Map
中,然後根據需要取值。
String str = "{\"age\":19,\"name\":\"archmage\"}";
Map<String, Object> map = JSON.parseObject(str, new TypeReference<Map<String, Object>>() {
});
Set set = map.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
String key = (String) it.next();
System.out.println(key + " = " + map.get(key));
}
//程式輸出
name = archmage
age = 19