Gson对象序列化和反序列化

2019-04-27 12:34|来源: 网路

我们将一个Java对象序列化为一个Json文件,然后读取该Json文件以获取对象。 在这个例子中,创建一个Student类。 然后将对象列化后存储在student.json文件中,该文件将具有Student对象的json表示形式。

示例

在中创建一个名为GsonTester的Java类文件,参考以下代码 -

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException;  

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder;  

public class GsonTester { 
   public static void main(String args[]) { 
      GsonTester tester = new GsonTester(); 
      try { 
         Student student = new Student(); 
         student.setAge(10); 
         student.setName("Mahesh"); 
         tester.writeJSON(student);  
         Student student1 = tester.readJSON(); 
         System.out.println(student1); 
      } 
      catch(FileNotFoundException e) { 
         e.printStackTrace(); 
      } 
      catch(IOException e) { 
         e.printStackTrace();
      } 
   } 
   private void writeJSON(Student student) throws IOException { 
      GsonBuilder builder = new GsonBuilder(); 
      Gson gson = builder.create(); 
      FileWriter writer = new FileWriter("student.json");   
      writer.write(gson.toJson(student));   
      writer.close(); 
   }  
   private Student readJSON() throws FileNotFoundException { 
      GsonBuilder builder = new GsonBuilder(); 
      Gson gson = builder.create(); 
      BufferedReader bufferedReader = new BufferedReader(
         new FileReader("student.json"));   

      Student student = gson.fromJson(bufferedReader, Student.class); 
      return student; 
   } 
} 
class Student { 
   private String name; 
   private int age; 
   public Student(){} 

   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; 
   } 
   public String toString() { 
      return "Student [ name: "+name+", age: "+ age+ " ]";
   }  
}

执行上面示例代码,得到以下结果 -

Student [ name: Mahesh, age: 10 ]

相关问答

更多

readfiles是序列化还是反序列化

准备工作和类设计 1 启动VS,新建C# 类库项目,并命名为KTools。 2 添加C# Winform项目,命名为Test,重命名主窗口为MainForm,并设置为启动项。同时在KTools项目添加文件夹Serializer,并在该文件夹中添加3个类:XMLSerializer、SoapSerializer和BinarySerializer,如下图: 3 该类库的设计目标是快速方便,最好把序列化和反序列化的方法做成静态方法,这样就可以省去了实例化的步骤。序列化大体上分为序列化到文件和序列化到流, ...

php的序列化和反序列化有什么好处?

可以把一个数组或对象转化成一个字符串,方便传输和存储

JMS序列化器反序列化对象的ArrayCollection(JMS Serializer deserialize ArrayCollection of Objects)

我找到的解决方案是使用项目(ArrayCollection类型)字段创建单独的类。 这里是这个类的jms-serializer定义: FooBundle\Entity\Cart: exclusion_policy: ALL properties: items: expose: true type: ArrayCollection<int, FooBundle\Entity\CartItem> Only solutio ...

是否可以在C ++中序列化和反序列化对象?(Is it possible to Serialize and Deserialize objects in C++?)

看一下这个: http://www.functionx.com/cpp/articles/serialization.htm 或使用 提升:序列化http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html Check this out: http://www.functionx.com/cpp/articles/serialization.htm or use Boost:Serialization http://w ...

hessian 对象的序列化

1、解释: 简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; 3、当对一个对象实现序列化时,究竟发生了什么? 在没有序列化前,每个保存在堆(Heap)中的对象都 ...

相关文章

更多

最近更新

更多