Google Gson 手动实现字符串的反序列化和序列化

x33g5p2x  于2021-12-25 转载在 Go  
字(1.2k)|赞(0)|评价(0)|浏览(454)

本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考。

1 手动实现字符串的反序列化实际上使用的是 com.google.gson.stream.JsonReader

@Test
public void test() throws IOException {
    String jsonStr = "{\"account\":\"admin\",\"password\":\"123456\",\"name\":\"John\",\"age\":30}";
    User user = new User();
    JsonReader reader = new JsonReader(new StringReader(jsonStr));
    reader.beginObject();
    while (reader.hasNext()) {
        String name = reader.nextName();
        switch (name) {
            case "account":
                user.setAccount(reader.nextString());
                break;
            case "password":
                user.setPassword(reader.nextString());
                break;
            case "name":
                user.setName(reader.nextString());
                break;
            case "age":
                user.setAge(reader.nextInt());
                break;
            default:
                break;
        }
    }
    reader.endObject();
    System.out.println(user);
    reader.close();
}

运行结果:

2 手动实现字符串的序列化实际上使用的是 com.google.gson.stream.JsonWriter

@Test
public void test() throws IOException {
    JsonWriter writer = new JsonWriter(new OutputStreamWriter(System.out));
    writer.beginObject()
        .name("account").value("admin")
        .name("password").value("123456")
        .name("name").value("John")
        .name("age").value(30)
        .endObject();
    writer.flush();
    writer.close();
}

运行结果:

相关文章