博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列化一个double时在其后面限制两位小数点
阅读量:7280 次
发布时间:2019-06-30

本文共 4561 字,大约阅读时间需要 15 分钟。

hot3.png

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

  • @JsonIgnoreProperties

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

  • @JsonIgnore

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

  • @JsonFormat

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

  • @JsonSerialize

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

public class CustomDoubleSerialize extends JsonSerializer
{ private DecimalFormat df = new DecimalFormat("##.00"); @Override public void serialize(Double value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(df.format(value)); } }
  • @JsonDeserialize

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

public class CustomDateDeserialize extends JsonDeserializer
{ private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @Override public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { Date date = null; try { date = sdf.parse(jp.getText()); } catch (ParseException e) { e.printStackTrace(); } return date; } }
  • 完整例子
public class Demo {      public static void main(String[] args) {            writeJsonObject();            // readJsonObject();      }        // 直接写入一个对象(所谓序列化)      public static void writeJsonObject() {          ObjectMapper mapper = new ObjectMapper();          Person person = new Person("nomouse", 25, true, new Date(), "程序员",                  2500.0);          try {              mapper.writeValue(new File("c:/person.json"), person);          } catch (JsonGenerationException e) {              e.printStackTrace();          } catch (JsonMappingException e) {              e.printStackTrace();          } catch (IOException e) {              e.printStackTrace();          }      }        // 直接将一个json转化为对象(所谓反序列化)      public static void readJsonObject() {          ObjectMapper mapper = new ObjectMapper();            try {              Person person = mapper.readValue(new File("c:/person.json"),                      Person.class);              System.out.println(person.toString());          } catch (JsonParseException e) {              e.printStackTrace();          } catch (JsonMappingException e) {              e.printStackTrace();          } catch (IOException e) {              e.printStackTrace();          }      }      }
//表示序列化时忽略的属性  @JsonIgnoreProperties(value = { "word" })  public class Person {      private String name;      private int age;      private boolean sex;      private Date birthday;      private String word;      private double salary;        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 boolean isSex() {          return sex;      }        public void setSex(boolean sex) {          this.sex = sex;      }        public Date getBirthday() {          return birthday;      }        // 反序列化一个固定格式的Date      @JsonDeserialize(using = CustomDateDeserialize.class)      public void setBirthday(Date birthday) {          this.birthday = birthday;      }        public String getWord() {          return word;      }        public void setWord(String word) {          this.word = word;      }        // 序列化指定格式的double格式      @JsonSerialize(using = CustomDoubleSerialize.class)      public double getSalary() {          return salary;      }        public void setSalary(double salary) {          this.salary = salary;      }        public Person(String name, int age) {          this.name = name;          this.age = age;      }        public Person(String name, int age, boolean sex, Date birthday,              String word, double salary) {          super();          this.name = name;          this.age = age;          this.sex = sex;          this.birthday = birthday;          this.word = word;          this.salary = salary;      }        public Person() {      }        @Override      public String toString() {          return "Person [name=" + name + ", age=" + age + ", sex=" + sex                  + ", birthday=" + birthday + ", word=" + word + ", salary="                  + salary + "]";      }    }

转载于:https://my.oschina.net/u/2935389/blog/1818537

你可能感兴趣的文章
免插件,简单实现上拉加载loading
查看>>
一个现象,
查看>>
传说中的 拉伸,
查看>>
python中取整的几种方法
查看>>
css中margin上下外边距重叠问题
查看>>
祝母亲大人福如东海长流水,寿比南山不老松
查看>>
基于SolidWorks 二次开发专用CAD系统
查看>>
【HDOJ】1069 Monkey and Banana
查看>>
Linux下安装opencv with-ffmpeg解决无法读取视频的问题
查看>>
python中的随机函数
查看>>
lockf
查看>>
洛谷P2697 宝石串
查看>>
css3 在线编辑工具 连兼容都写好了
查看>>
移动端 Retina屏border实现0.5px
查看>>
ios 自定义NSError
查看>>
DBCP连接池
查看>>
4.2 time & datetime 模块
查看>>
m4-第四次考试
查看>>
基于NiosII的TRDB-LTM控制器IP核的设计
查看>>
Skia引擎API整理介绍
查看>>