Jackson-annotations-jsonanygetter

提供:Dev Guides
移動先:案内検索

Jackson Annotations-@JsonAnyGetter

*@ JsonAnyGetter* を使用すると、getterメソッドはMapを返すことができます。Mapは、他のプロパティと同様の方法でJSONの追加プロパティをシリアル化するために使用されます。

@JsonAnyGetterを使用しない例

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTester {
   public static void main(String args[]){
      ObjectMapper mapper = new ObjectMapper();
      try{
         Student student = new Student();
         student.add("Name", "Mark");
         student.add("RollNo", "1");
         String jsonString = mapper
            .writerWithDefaultPrettyPrinter()
            .writeValueAsString(student);
         System.out.println(jsonString);
      }
      catch (IOException e) {
         e.printStackTrace();
      }
   }
}
class Student {
   private Map<String, String> properties;
   public Student(){
      properties = new HashMap<>();
   }
   public Map<String, String> getProperties(){
      return properties;
   }
   public void add(String property, String value){
      properties.put(property, value);
   }
}

出力

{
   "properties" : {
      "RollNo" : "1",
      "Name" : "Mark"
   }
}

@JsonAnyGetterを使用した例

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTester {
   public static void main(String args[]){
      ObjectMapper mapper = new ObjectMapper();
      try{
         Student student = new Student();
         student.add("Name", "Mark");
         student.add("RollNo", "1");
         String jsonString = mapper
            .writerWithDefaultPrettyPrinter()
            .writeValueAsString(student);
         System.out.println(jsonString);
      }
      catch (IOException e) {
         e.printStackTrace();
      }
   }
}
class Student {
   private Map<String, String> properties;
   public Student(){
      properties = new HashMap<>();
   }
   @JsonAnyGetter
   public Map<String, String> getProperties(){
      return properties;
   }
   public void add(String property, String value){
      properties.put(property, value);
   }
}

出力

{
   "RollNo" : "1",
   "Name" : "Mark"
}