Java序列化是一種將Java對象轉(zhuǎn)換為字節(jié)流的過程,以方便在網(wǎng)絡(luò)上傳輸或保存至本地文件。在Java中,通過實現(xiàn)Serializable接口和Externalizable接口,可以實現(xiàn)對象序列化和反序列化。以下是一個簡單例子:
public class Person implements Serializable { private String name; private int age; // getter 和 setter省略 @Override public String toString() { return "Person{" + "name='" + name + "'" + ", age=" + age + '}'; } } // 序列化對象 Person person = new Person("Tom", 25); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(person); oos.close(); // 反序列化對象 byte[] bytes = bos.toByteArray(); ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bis); Person person1 = (Person) ois.readObject(); ois.close(); System.out.println(person1);
與Java序列化相比,JSON是一種輕量級的數(shù)據(jù)交換格式。它可以使用不同的編程語言進行解析和生成,非常靈活。在Java中,可以使用Jackson、Gson、Fastjson等庫來實現(xiàn)JSON數(shù)據(jù)的編解碼。以下是一個簡單例子:
// 編碼對象為JSON字符串 Person person = new Person("Tom", 25); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(person); System.out.println(jsonString); // 將JSON字符串解碼為對象 String jsonString = "{\"name\":\"Tom\",\"age\":25}"; ObjectMapper mapper = new ObjectMapper(); Person person = mapper.readValue(jsonString, Person.class); System.out.println(person);
總的來說,Java序列化和JSON有一些相似之處,例如它們都可以將Java對象轉(zhuǎn)換為字節(jié)流或字符串,方便在網(wǎng)絡(luò)上傳輸或保存至本地文件。但是,與JSON相比,Java序列化由于只能在Java中使用,可移植性不夠強,且序列化成的字節(jié)流往往比JSON的字符串要更占用空間。