Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解

  • @JsonIgnoreProperties

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

  • @JsonIgnore

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

  • @JsonFormat

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

  • @JsonSerialize

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

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

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

  1. public class CustomDateDeserialize extends JsonDeserializer<Date> {
  2. private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  3. @Override
  4. public Date deserialize(JsonParser jp, DeserializationContext ctxt)
  5. throws IOException, JsonProcessingException {
  6. Date date = null;
  7. try {
  8. date = sdf.parse(jp.getText());
  9. } catch (ParseException e) {
  10. e.printStackTrace();
  11. }
  12. return date;
  13. }
  14. }
  • 完整例子
  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. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. public int getAge() {
  17. return age;
  18. }
  19. public void setAge(int age) {
  20. this.age = age;
  21. }
  22. public boolean isSex() {
  23. return sex;
  24. }
  25. public void setSex(boolean sex) {
  26. this.sex = sex;
  27. }
  28. public Date getBirthday() {
  29. return birthday;
  30. }
  31. // 反序列化一个固定格式的Date
  32. @JsonDeserialize(using = CustomDateDeserialize.class)
  33. public void setBirthday(Date birthday) {
  34. this.birthday = birthday;
  35. }
  36. public String getWord() {
  37. return word;
  38. }
  39. public void setWord(String word) {
  40. this.word = word;
  41. }
  42. // 序列化指定格式的double格式
  43. @JsonSerialize(using = CustomDoubleSerialize.class)
  44. public double getSalary() {
  45. return salary;
  46. }
  47. public void setSalary(double salary) {
  48. this.salary = salary;
  49. }
  50. public Person(String name, int age) {
  51. this.name = name;
  52. this.age = age;
  53. }
  54. public Person(String name, int age, boolean sex, Date birthday,
  55. String word, double salary) {
  56. super();
  57. this.name = name;
  58. this.age = age;
  59. this.sex = sex;
  60. this.birthday = birthday;
  61. this.word = word;
  62. this.salary = salary;
  63. }
  64. public Person() {
  65. }
  66. @Override
  67. public String toString() {
  68. return "Person [name=" + name + ", age=" + age + ", sex=" + sex
  69. + ", birthday=" + birthday + ", word=" + word + ", salary="
  70. + salary + "]";
  71. }
  72. }
    1. public class Demo {
    2. public static void main(String[] args) {
    3. writeJsonObject();
    4. // readJsonObject();
    5. }
    6. // 直接写入一个对象(所谓序列化)
    7. public static void writeJsonObject() {
    8. ObjectMapper mapper = new ObjectMapper();
    9. Person person = new Person("nomouse", 25, true, new Date(), "程序员",
    10. 2500.0);
    11. try {
    12. mapper.writeValue(new File("c:/person.json"), person);
    13. } catch (JsonGenerationException e) {
    14. e.printStackTrace();
    15. } catch (JsonMappingException e) {
    16. e.printStackTrace();
    17. } catch (IOException e) {
    18. e.printStackTrace();
    19. }
    20. }
    21. // 直接将一个json转化为对象(所谓反序列化)
    22. public static void readJsonObject() {
    23. ObjectMapper mapper = new ObjectMapper();
    24. try {
    25. Person person = mapper.readValue(new File("c:/person.json"),
    26. Person.class);
    27. System.out.println(person.toString());
    28. } catch (JsonParseException e) {
    29. e.printStackTrace();
    30. } catch (JsonMappingException e) {
    31. e.printStackTrace();
    32. } catch (IOException e) {
    33. e.printStackTrace();
    34. }
    35. }
    36. }  
      1. 本文转自http://blog.csdn.net/nomousewch/article/details/8955796 感谢作者

Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解的更多相关文章

  1. 【XPath Helper:chrome爬虫网页解析工具 Chrome插件】XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插件网

    [XPath Helper:chrome爬虫网页解析工具 Chrome插件]XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插 ...

  2. json 帮助工具

    import java.lang.reflect.Type; import com.google.gson.Gson; /** * json 帮助工具 */public final class Gso ...

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

    原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...

  4. Json解析工具Jackson(简单应用)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 概述 Jackson库(http://jackson.codehaus.org),是 ...

  5. [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...

  6. android:json解析的两个工具:Gson和Jackson的使用小样例

    1.简单介绍 json是android与server通信过程中经常使用的数据格式,比如.例如以下是一个json格式的字符串: {"address":"Nanjing&qu ...

  7. android:json解析的两个工具:Gson和Jackson的使用小例子

    1.简介 json是android与服务器通信过程中常用的数据格式,例如,如下是一个json格式的字符串: {"address":"Nanjing"," ...

  8. JSON解析工具——Jackson的简单使用

    什么是Jackson 可以轻松实现Java对象与JSON字符串的转换 准备工作:导包 Jackson的jar all下载地址:http://jackson.codehaus.org/1.7.6/jac ...

  9. Jackson 框架,轻易转换JSON

    Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...

随机推荐

  1. Linux软件管理和安装

    软件安装和管理软件包1.bin文件.bin2.rpm包3.源码压缩包 安装软件的步骤: 1.检查是否已经安装 rpm -qa | grep jdk 2.下载软件包 3.安装 依赖 rpm 包,已经编译 ...

  2. Hbase源码分析:RPC概况

    RPC是hbase中Master,RegionServer和Client三者之间通信交流的纽带.了解hbase的rpc机制能够为通过源码学习hbase奠定良好的基础.因为了解了hbase的rpc机制能 ...

  3. CF816B Karen and Coffee

    思路: 有点类似于区间修改点查询的树状数组. 实现: #include <iostream> #include <cstdio> using namespace std; ; ...

  4. Pro ASP.Net Core MVC 6th 第四章

    第四章 C# 关键特征 在本章中,我描述了Web应用程序开发中使用的C#特征,这些特征尚未被广泛理解或经常引起混淆. 这不是关于C#的书,但是,我仅为每个特征提供一个简单的例子,以便您可以按照本书其余 ...

  5. 通俗理解LDA主题模型(boss)

    0 前言 看完前面几篇简单的文章后,思路还是不清晰了,但是稍微理解了LDA,下面@Hcy开始详细进入boss篇.其中文章可以分为下述5个步骤: 一个函数:gamma函数 四个分布:二项分布.多项分布. ...

  6. 【转载】自制4412底板自动进入SD卡更新模块

    转载自迅为论坛:http://www.topeetboard.com参考平台:迅为iTOP-4412开发板 问题如下:在自制的底板上,当SD卡插在板子上开机时,会自动进入Updating模式,如果SD ...

  7. python 3 Urllib 数据抓取

    1.0 Urllib简介 Urllib是python自带的标准库,无需安装,直接引用即可.urllib通常用于爬虫开发,API(应用程序编程接口)数据获取和测试.在python2和python3中,u ...

  8. vue组件---动态组件之多标签页面

    首先看下效果图 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  9. 05C语言数组

    C语言数组 一维数组 类型符 数组名[常量表达式] #include <stdio.h> int main(){ ] = {,,,}; int a; ;a<;a++){ printf ...

  10. A1. JVM 内存区域

    [概述] 在这篇笔记中,需要描述虚拟机中的内存是如何划分的,哪部分区域.什么样的代码和操作可能导致内存溢出异常.虽然 Java 有垃圾处理机制,但是如果生产环境在出现内存溢出异常时,由于开发人员不熟悉 ...