Jackson对象序列化/反系列化

2019-05-09 23:25|来源: 网路

这里将介绍将Java对象序列化到一个JSON文件,然后再读取JSON文件获取转换为对象。在这个例子中,创建了Student类。创建将有学生对象以JSON表示在一个student.json文件。

创建一个名为JacksonTester在Java类文件在 C:\>Jackson_WORKSPACE.


文件: JacksonTester.java

import java.io.File;
import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class JacksonTester {
   public static void main(String args[]){
      JacksonTester tester = new JacksonTester();
      try {
         Student student = new Student();
         student.setAge(10);
         student.setName("Mahesh");
         tester.writeJSON(student);

         Student student1 = tester.readJSON();
         System.out.println(student1);

      } catch (JsonParseException e) {
         e.printStackTrace();
      } catch (JsonMappingException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

   private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{
      ObjectMapper mapper = new ObjectMapper();	
      mapper.writeValue(new File("student.json"), student);
   }

   private Student readJSON() throws JsonParseException, JsonMappingException, IOException{
      ObjectMapper mapper = new ObjectMapper();
      Student student = mapper.readValue(new File("student.json"), 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+ " ]";
   }	
}


验证结果

使用 javac 编译如下类:

C:\Jackson_WORKSPACE>javac JacksonTester.java


现在运行jacksonTester看到的结果:

C:\Jackson_WORKSPACE>java JacksonTester


验证输出结果

Student [ name: Mahesh, age: 10 ]



相关问答

更多

Firebase允许拒绝(Permission denied with Firebase)

您可以提供".read": "auth != null"以允许所有授权用户读取users对象下的数据并防止未经授权的用户阅读它。 You could give ".read": "auth != null" to allow all authorised users to read data under users object and prevent unauthorised users from reading it.

UTF16十六进制到文本(UTF16 hex to text)

没错,Postgres不支持UTF-16。 但是,它确实支持Unicode转义序列 : SELECT U&'\0633\0644\0627\0645' 但请记住, Unicode代码点和UTF-16代码单元仅在Basic Multilingual Plane中是等效的。 换句话说,如果您有任何跨越多个16位代码单元的UTF-16字符,则需要自己将它们转换为相应的代码点。 That's right, Postgres doesn't support UTF-16. However, it doe

如何在Objective-C中使用本地静态对象?(How to use local static object in Objective-C?)

我希望我没有遗漏任何东西,但这就是我使用它的方式: - (void)foo { static NSMutableArray *mutableArr = nil; if (mutableArr == nil) { mutableArr = [[NSMutableArray alloc] init...]; // add more first time initialization as required } assert(mutabl

Python中的模块化编译器(Modular Compiler in Python)

您想使用像stevedore这样的现有插件库。 它将为您提供枚举可导入文件的工具,以及导入这些模块的工具。 You want to use an existing plugin library like stevedore. It will give you the tools to enumerate files that can be imported, and tools to import those modules.

澄清用户识别的AWS教程 - 变量发生变化(Clarifying AWS tutorial for User identification - variables change)

您应该将该代码放在实例化凭证提供程序的位置(理想情况下应该是单例)。 就区域而言,您可以尝试Regions.US_EAST_1而不是Regions.USEAST1吗? 如果您很好奇,Cognito 示例应用程序会有一个示例实现。 You should put that code wherever you instantiate the credentials provider (which should ideally be a singleton). As far as region, can

相关文章

更多

最近更新

更多