- 1 准备
- 2 序列化
- 2.1 fastjson
- 2.2 jackson
- 2.3 json
- 3. 反序列化
- 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
有如下类:
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
List3.4.2 jacksonpersonList = JSON.parseArray(personListStr, Person.class); List personList2 = JSON.parseObject(personListStr, new TypeReference >(){});
List3.4.3 gsonpersonListByJackson = objectMapper.readValue(personListStr, new TypeReference >(){});
ListpersonListByGson = gson.fromJson(personListStr, new TypeToken >() {}.getType());



