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 ]



相关问答

更多

如何在for循环中为图形添加边?(How can I add edges to my graph in a for loop?)

for loop { exampleGraph.setEdgeWeight(exampleGraph.addEdge(x, y), w); } 你尝试过这样的事吗? for loop { exampleGraph.setEdgeWeight(exampleGraph.addEdge(x, y), w); } Did you try something like this?

使用Object Mapper Model生成请求(Using Object Mapper Model for generating a request)

你没有初始化这个对象。 var returnModel: ReturnModel? = ReturnModel() 您可以为此创建一个init方法,它将单独工作,但使用ObjectMapper。 init(filingStatusId: Int, formName: String, orderId: String { self.FilingStatusId = filingStatusId self.FormName = formName self.OrderId =

从另一个活动调用另一个活动的方法(Calling method of one another activity from another activity)

考虑将该方法设为静态方法。 虽然我不确定你是否被允许实例化这样的Activity,你还记得将它们都添加到Android清单中吗? 也许getApplicationContext()返回null 。 Got the Solution, wrote the code in "onResume()" of second tab, so no need to call method.

在Logstash中从CSV(纬度和经度列)创建地理点对象(Creating a geopoint object from CSV (latitude and longitude columns) in Logstash)

你需要删除最后一个mutate过滤器,它会破坏你想要实现的目的。 此外,您需要确保testindex1映射忠实地包含您的testindex1 elasticsearch-template.json文件中的映射。 You need to remove the last mutate filter which defeats the purpose of what you're trying to achieve. Also you need to make sure that the testin

如何规范化三维向量矩阵(How to normalize a matrix of 3-D vectors)

如果向量是欧几里德 ,则每个向量的长度是其坐标平方和的平方根。 要单独规范化每个向量以使其具有单位长度,您需要将其坐标除以其范数。 为此,您可以使用bsxfun : norm_A = sqrt(sum(A .^ 2, 3)_; %// Calculate Euclidean length norm_A(norm_A < eps) == 1; %// Avoid division by zero B = bsxfun(@rdivide, A, norm_A); %// Normal

相关文章

更多

最近更新

更多