`
zzc1684
  • 浏览: 1190324 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Json解析工具Jackson(使用注解)

阅读更多

       接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给我们提供了一系列注解,提高了开发的灵活性,下面介绍一下最常用的一些注解

  • @JsonIgnoreProperties

         此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

  • @JsonIgnore

         此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。

  • @JsonFormat

        此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")

  • @JsonSerialize

        此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

  1. public class CustomDoubleSerialize extends JsonSerializer<Double> {  
  2.   
  3.     private DecimalFormat df = new DecimalFormat("##.00");  
  4.   
  5.     @Override  
  6.     public void serialize(Double value, JsonGenerator jgen,  
  7.             SerializerProvider provider) throws IOException,  
  8.             JsonProcessingException {  
  9.   
  10.         jgen.writeString(df.format(value));  
  11.     }  
  12. }  
  • @JsonDeserialize

         此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize

  1. public class CustomDateDeserialize extends JsonDeserializer<Date> {  
  2.   
  3.     private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  4.   
  5.     @Override  
  6.     public Date deserialize(JsonParser jp, DeserializationContext ctxt)  
  7.             throws IOException, JsonProcessingException {  
  8.   
  9.         Date date = null;  
  10.         try {  
  11.             date = sdf.parse(jp.getText());  
  12.         } catch (ParseException e) {  
  13.             e.printStackTrace();  
  14.         }  
  15.         return date;  
  16.     }  
  17. }  

 

  • 完整例子

       

  1. //表示序列化时忽略的属性  
  2. @JsonIgnoreProperties(value = { "word" })  
  3. public class Person {  
  4.     private String name;  
  5.     private int age;  
  6.     private boolean sex;  
  7.     private Date birthday;  
  8.     private String word;  
  9.     private double salary;  
  10.   
  11.     public String getName() {  
  12.         return name;  
  13.     }  
  14.   
  15.     public void setName(String name) {  
  16.         this.name = name;  
  17.     }  
  18.   
  19.     public int getAge() {  
  20.         return age;  
  21.     }  
  22.   
  23.     public void setAge(int age) {  
  24.         this.age = age;  
  25.     }  
  26.   
  27.     public boolean isSex() {  
  28.         return sex;  
  29.     }  
  30.   
  31.     public void setSex(boolean sex) {  
  32.         this.sex = sex;  
  33.     }  
  34.   
  35.     public Date getBirthday() {  
  36.         return birthday;  
  37.     }  
  38.   
  39.     // 反序列化一个固定格式的Date  
  40.     @JsonDeserialize(using = CustomDateDeserialize.class)  
  41.     public void setBirthday(Date birthday) {  
  42.         this.birthday = birthday;  
  43.     }  
  44.   
  45.     public String getWord() {  
  46.         return word;  
  47.     }  
  48.   
  49.     public void setWord(String word) {  
  50.         this.word = word;  
  51.     }  
  52.   
  53.     // 序列化指定格式的double格式  
  54.     @JsonSerialize(using = CustomDoubleSerialize.class)  
  55.     public double getSalary() {  
  56.         return salary;  
  57.     }  
  58.   
  59.     public void setSalary(double salary) {  
  60.         this.salary = salary;  
  61.     }  
  62.   
  63.     public Person(String name, int age) {  
  64.         this.name = name;  
  65.         this.age = age;  
  66.     }  
  67.   
  68.     public Person(String name, int age, boolean sex, Date birthday,  
  69.             String word, double salary) {  
  70.         super();  
  71.         this.name = name;  
  72.         this.age = age;  
  73.         this.sex = sex;  
  74.         this.birthday = birthday;  
  75.         this.word = word;  
  76.         this.salary = salary;  
  77.     }  
  78.   
  79.     public Person() {  
  80.     }  
  81.   
  82.     @Override  
  83.     public String toString() {  
  84.         return "Person [name=" + name + ", age=" + age + ", sex=" + sex  
  85.                 + ", birthday=" + birthday + ", word=" + word + ", salary="  
  86.                 + salary + "]";  
  87.     }  
  88.   
  89. }  

 

  1. public class Demo {  
  2.     public static void main(String[] args) {  
  3.   
  4.         writeJsonObject();  
  5.   
  6.         // readJsonObject();  
  7.     }  
  8.   
  9.     // 直接写入一个对象(所谓序列化)  
  10.     public static void writeJsonObject() {  
  11.         ObjectMapper mapper = new ObjectMapper();  
  12.         Person person = new Person("nomouse"25truenew Date(), "程序员",  
  13.                 2500.0);  
  14.         try {  
  15.             mapper.writeValue(new File("c:/person.json"), person);  
  16.         } catch (JsonGenerationException e) {  
  17.             e.printStackTrace();  
  18.         } catch (JsonMappingException e) {  
  19.             e.printStackTrace();  
  20.         } catch (IOException e) {  
  21.             e.printStackTrace();  
  22.         }  
  23.     }  
  24.   
  25.     // 直接将一个json转化为对象(所谓反序列化)  
  26.     public static void readJsonObject() {  
  27.         ObjectMapper mapper = new ObjectMapper();  
  28.   
  29.         try {  
  30.             Person person = mapper.readValue(new File("c:/person.json"),  
  31.                     Person.class);  
  32.             System.out.println(person.toString());  
  33.         } catch (JsonParseException e) {  
  34.             e.printStackTrace();  
  35.         } catch (JsonMappingException e) {  
  36.             e.printStackTrace();  
  37.         } catch (IOException e) {  
  38.             e.printStackTrace();  
  39.         }  
  40.     }  
  41.   
  42.   

分享到:
评论

相关推荐

    Jackson压缩包

    Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”。 压缩包内包含了spring requestBody注解解析的所需的三个jar包

    java开源包8

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包1

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包11

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包2

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包3

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包6

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包5

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包10

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包4

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包7

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包9

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包101

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    Java资源包01

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics