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