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 ]



相关问答

更多

使用Jackson 2.0在Map中序列化JSON对象(Serializing JSON objects within a Map using Jackson 2.0)

在进一步搜索之后,我得出的结论是,如果不重写Jackson的序列化器,就不可能解决我的问题。 从Jackson邮件列表中,我得到了这个答案: 您可以覆盖(de)用于JsonNode序列化JsonNode ,并且可以用于更改多态类型ID的处理(对于预期类型ID的情况,存在单独的deserialize方法,类似于序列化程序)。 这可能会使您的案件得以处理。 我想这是确定的答案。 After searching further, I came to the conclusion it's not po

使用Jackson序列化UUID集(Serialize Set of UUID using Jackson)

Jackson应该自动使用UUID序列化器,反序列化器,因此您的注释不应该是必需的。 但是对于注释的使用,正如所建议的那样,(de)内容序列化器(而不是值本身!)确实需要使用注释的contentUsing属性 - 否则Jackson将尝试直接为给定(de)序列化器应用该值,据报道不匹配 Jackson should automatically use UUID serializers, deserializers, so your annotations should not be necess

JSON Jackson序列化反序列化列表(JSON Jackson serialize deserialize List of List)

问题是由于一个非常深的对象不可序列化。 真的很深,很少。 谢谢大家。 The problem was due to a really deep object not serializable. Really deep and little. Thanks all.

如何序列化Jackson的JsonNode对象?(How can I serialize Jackson's JsonNode object?)

JSON最好通过将其写为字节来序列化。 在Jackson中,它是使用ObjectMapper完成的,例如: byte[] raw = objectMapper.writeValueAsBytes(root); MemCache并不真正需要Serializable,因为它是所有原始字节; 虽然Java客户端可能会尝试提供帮助并处理序列化。 JSON is best serialized by writing it out as bytes. In Jackson, it is done usin

在使用FasterXML Jackson对其进行序列化之前将对象转换为“其他东西”(Converting Object into “something else” before Serializing it using FasterXML Jackson)

使用默认的ObjectMapper您必须确保序列化的对象是Java Bean 。 对于非bean类,您可以使用m.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);设置字段可见m.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); 或使用@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)注释您的类。 对于

相关文章

更多

最近更新

更多