fastjson、jackson、gson用法一览
文章目录
- 1 准备
- 2 序列化
- 2.1 fastjson
- 2.2 jackson
- 2.3 json
- 反序列化
- 3.1 字符串反序列为Json对象
- 3.1.1 fastjson
- 3.1.2 jackson
- 3.1.2 gson
- 3.2 字符串反序列为Java对象
- 3.2.1 fastjson
- 3.2.2 jackson
- 3.2.3 gson
- 3.3 字符串反序列化成json数组
- 3.3.1 fastjson
- 3.3.2 jackson
- 3.3.3 gson
- 3.4 字符串反序列化成List
- 3.4.1 fastjson
- 3.4.2 jackson
- 3.4.3 gson
1 准备
有如下类:
class Person {
private String name;
private int age;
public Person() {
}
public Person(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;
}
}
有如下对象:
Person person = new Person("张三", 23);
String personStr = "{\"age\":23,\"name\":\"张三\"}";
String personListStr = "[{\"age\":23,\"name\":\"张三\"}]";
2 序列化
2.1 fastjson
JSON.toJSONString(person);
美化json:
JSON.toJSONString(person, SerializerFeature.PrettyFormat);
// 或者
JSON.toJSONString(person, true);
2.2 jackson
objectMapper.writeValueAsString(person);
美化json:
objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
2.3 json
Gson gson = new Gson();
gson.toJson(person);
美化json:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.toJson(person);
3. 反序列化
3.1 字符串反序列为Json对象
3.1.1 fastjson
JSONObject jsonObject = JSON.parseObject(personStr);
System.out.println(jsonObject.getString("name"));
System.out.println(jsonObject.getInteger("age"));
3.1.2 jackson
JsonNode node = objectMapper.readTree(personStr);
System.out.println(node.get("name").asText());
System.out.println(node.get("age").asInt());
3.1.2 gson
JsonObject gsonObject = new JsonParser().parse(personStr).getAsJsonObject();
System.out.println(gsonObject.get("name").getAsString());
System.out.println(gsonObject.get("age").getAsInt());
3.2 字符串反序列为Java对象
3.2.1 fastjson
Person person = JSON.parseObject(personStr, Person.class);
3.2.2 jackson
Person person = objectMapper.readValue(personStr, Person.class);
3.2.3 gson
Person person = new Gson().fromJson(personStr, Person.class);
3.3 字符串反序列化成json数组
3.3.1 fastjson
JSONArray jsonArray = JSON.parseArray(personListStr);
// 遍历
for (Object item : jsonArray ) {
JSONObject itemObject = (JSONObject) item;
System.out.println(itemObject.getString("name"));
System.out.println(itemObject.getInteger("age"));
}
3.3.2 jackson
JsonNode jsonNode = objectMapper.readTree(personListStr);
if (jsonNode.isArray()) {
for (JsonNode item : jsonNode) {
System.out.println(item.get("name").asText());
System.out.println(item.get("age").asInt());
}
}
3.3.3 gson
JsonArray jsonArray = new JsonParser().parse(personListStr).getAsJsonArray();
for (JsonElement jsonElement : jsonArray) {
System.out.println(jsonElement.getAsJsonObject().get("name").getAsString());
System.out.println(jsonElement.getAsJsonObject().get("age").getAsInt());
}
3.4 字符串反序列化成List
3.4.1 fastjson
List<Person> personList = JSON.parseArray(personListStr, Person.class);
List<Person> personList2 = JSON.parseObject(personListStr, new TypeReference<List<Person>>(){
});
3.4.2 jackson
List<Person> personListByJackson = objectMapper.readValue(personListStr, new TypeReference<List<Person>>(){
});
3.4.3 gson
List<Person> personListByGson = gson.fromJson(personListStr, new TypeToken<List<Person>>() {
}.getType());
还没有评论,来说两句吧...