最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java下利用Jackson進行JSON解析和序列化示例

 更新時間:2017年02月14日 15:26:32   作者:死神的喪鐘  
本篇文章主要介紹了Java下利用Jackson進行JSON解析和序列化示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

Java下常見的Json類庫有Gson、JSON-lib和Jackson等,Jackson相對來說比較高效,在項目中主要使用Jackson進行JSON和Java對象轉(zhuǎn)換,下面給出一些Jackson的JSON操作方法。

一、準備工作

首先去官網(wǎng)下載Jackson工具包。Jackson有1.x系列和2.x系列,截止目前2.x系列的最新版本是2.2.3,2.x系列有3個jar包需要下載:

jackson-core-2.2.3.jar(核心jar包,下載地址

jackson-annotations-2.2.3.jar(該包提供Json注解支持,下載地址

jackson-databind-2.2.3.jar(下載地址

//JSON序列化和反序列化使用的User類 
import java.util.Date; 
 
public class User { 
  private String name; 
  private Integer age; 
  private Date birthday; 
  private String email; 
   
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
   
  public Integer getAge() { 
    return age; 
  } 
  public void setAge(Integer age) { 
    this.age = age; 
  } 
   
  public Date getBirthday() { 
    return birthday; 
  } 
  public void setBirthday(Date birthday) { 
    this.birthday = birthday; 
  } 
   
  public String getEmail() { 
    return email; 
  } 
  public void setEmail(String email) { 
    this.email = email; 
  } 
} 

二、JAVA對象轉(zhuǎn)JSON[JSON序列化]

import java.io.IOException; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
 
import com.fasterxml.jackson.databind.ObjectMapper; 
 
public class JacksonDemo { 
  public static void main(String[] args) throws ParseException, IOException { 
    User user = new User(); 
    user.setName("小民");  
    user.setEmail("xiaomin@sina.com"); 
    user.setAge(20); 
     
    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); 
    user.setBirthday(dateformat.parse("1996-10-01"));     
     
    /** 
     * ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中實現(xiàn)。 
     * ObjectMapper有多個JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介質(zhì)中。 
     * writeValue(File arg0, Object arg1)把arg1轉(zhuǎn)成json序列,并保存到arg0文件中。 
     * writeValue(OutputStream arg0, Object arg1)把arg1轉(zhuǎn)成json序列,并保存到arg0輸出流中。 
     * writeValueAsBytes(Object arg0)把arg0轉(zhuǎn)成json序列,并把結(jié)果輸出成字節(jié)數(shù)組。 
     * writeValueAsString(Object arg0)把arg0轉(zhuǎn)成json序列,并把結(jié)果輸出成字符串。 
     */ 
    ObjectMapper mapper = new ObjectMapper(); 
     
    //User類轉(zhuǎn)JSON 
    //輸出結(jié)果:{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"} 
    String json = mapper.writeValueAsString(user); 
    System.out.println(json); 
     
    //Java集合轉(zhuǎn)JSON 
    //輸出結(jié)果:[{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}] 
    List<User> users = new ArrayList<User>(); 
    users.add(user); 
    String jsonlist = mapper.writeValueAsString(users); 
    System.out.println(jsonlist); 
  } 
} 

三、JSON轉(zhuǎn)Java類[JSON反序列化]

import java.io.IOException; 
import java.text.ParseException; 
import com.fasterxml.jackson.databind.ObjectMapper; 
 
public class JacksonDemo { 
  public static void main(String[] args) throws ParseException, IOException { 
    String json = "{\"name\":\"小民\",\"age\":20,\"birthday\":844099200000,\"email\":\"xiaomin@sina.com\"}"; 
     
    /** 
     * ObjectMapper支持從byte[]、File、InputStream、字符串等數(shù)據(jù)的JSON反序列化。 
     */ 
    ObjectMapper mapper = new ObjectMapper(); 
    User user = mapper.readValue(json, User.class); 
    System.out.println(user); 
  } 
} 

四、JSON注解

Jackson提供了一系列注解,方便對JSON序列化和反序列化進行控制,下面介紹一些常用的注解。

@JsonIgnore 此注解用于屬性上,作用是進行JSON操作時忽略該屬性。

@JsonFormat 此注解用于屬性上,作用是把Date類型直接轉(zhuǎn)化為想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。

@JsonProperty 此注解用于屬性上,作用是把該屬性的名稱序列化為另外一個名稱,如把trueName屬性序列化為name,@JsonProperty("name")。

import java.util.Date; 
import com.fasterxml.jackson.annotation.*; 
 
public class User { 
  private String name; 
   
  //不JSON序列化年齡屬性 
  @JsonIgnore  
  private Integer age; 
   
  //格式化日期屬性 
  @JsonFormat(pattern = "yyyy年MM月dd日") 
  private Date birthday; 
   
  //序列化email屬性為mail 
  @JsonProperty("mail") 
  private String email; 
   
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
   
  public Integer getAge() { 
    return age; 
  } 
  public void setAge(Integer age) { 
    this.age = age; 
  } 
   
  public Date getBirthday() { 
    return birthday; 
  } 
  public void setBirthday(Date birthday) { 
    this.birthday = birthday; 
  } 
   
  public String getEmail() { 
    return email; 
  } 
  public void setEmail(String email) { 
    this.email = email; 
  } 
} 
import java.io.IOException; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
 
import com.fasterxml.jackson.databind.ObjectMapper; 
 
public class JacksonDemo { 
 
  public static void main(String[] args) throws ParseException, IOException { 
    User user = new User(); 
    user.setName("小民");  
    user.setEmail("xiaomin@sina.com"); 
    user.setAge(20); 
     
    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); 
    user.setBirthday(dateformat.parse("1996-10-01"));     
     
    ObjectMapper mapper = new ObjectMapper(); 
    String json = mapper.writeValueAsString(user); 
    System.out.println(json); 
    //輸出結(jié)果:{"name":"小民","birthday":"1996年09月30日","mail":"xiaomin@sina.com"} 
  } 
} 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring如何通過注解存儲和讀取對象詳解

    Spring如何通過注解存儲和讀取對象詳解

    在Spring中,要想更簡單的存儲和讀取對象的核心是使用注解,這篇文章主要給大家介紹了關(guān)于Spring如何通過注解存儲和讀取對象的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Java使用JDBC或MyBatis框架向Oracle中插入XMLType數(shù)據(jù)

    Java使用JDBC或MyBatis框架向Oracle中插入XMLType數(shù)據(jù)

    XMLType是Oracle支持的一種基于XML格式存儲的數(shù)據(jù)類型,這里我們共同來探究Java使用JDBC或MyBatis框架向Oracle中插入XMLType數(shù)據(jù)的方法:
    2016-07-07
  • Java中的集合工具類Collections詳解

    Java中的集合工具類Collections詳解

    這篇文章主要介紹了Java中的集合工具類Collections詳解,java.utils.Collections是集合工具類,用來對集合進行操作,不是Collection集合的根接口,這個要區(qū)分開來,需要的朋友可以參考下
    2024-01-01
  • Spring MVC參數(shù)校驗詳解(關(guān)于`@RequestBody`返回`400`)

    Spring MVC參數(shù)校驗詳解(關(guān)于`@RequestBody`返回`400`)

    這篇文章主要介紹了Spring MVC參數(shù)校驗的相關(guān)資料,主要是針對`@RequestBody`返回`400`的問題,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08
  • java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法

    java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法

    今天小編就為大家分享一篇java輸入多個數(shù)據(jù)(不確定),排序,并求最大值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 一文詳解Java二分查找算法

    一文詳解Java二分查找算法

    二分查找(binary search),也稱折半搜索,是一種在有序數(shù)組中查找某一特定元素的搜索算法,接下來就來給大家講講都有哪些查找算法,以及經(jīng)典的二分查找法該如何實現(xiàn),需要的朋友可以參考下
    2023-07-07
  • java實現(xiàn)馬踏棋盤游戲

    java實現(xiàn)馬踏棋盤游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)馬踏棋盤游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 使用Shiro實現(xiàn)登錄成功后跳轉(zhuǎn)到之前的頁面

    使用Shiro實現(xiàn)登錄成功后跳轉(zhuǎn)到之前的頁面

    這篇文章主要介紹了如何使用Shiro實現(xiàn)不同用戶登錄成功后跳轉(zhuǎn)到不同主頁,實現(xiàn)此功能目前比較好的方法是用ajax的方法登錄,第二種方法是把用戶未登錄前的url存在session中,需要的朋友可以參考下
    2015-07-07
  • Java如何使用ReentrantLock實現(xiàn)長輪詢

    Java如何使用ReentrantLock實現(xiàn)長輪詢

    這篇文章主要介紹了如何使用ReentrantLock實現(xiàn)長輪詢,對ReentrantLock感興趣的同學,可以參考下
    2021-04-04
  • Java通過動態(tài)規(guī)劃設(shè)計股票買賣最佳時機

    Java通過動態(tài)規(guī)劃設(shè)計股票買賣最佳時機

    動態(tài)規(guī)劃可謂是大名鼎鼎,筆試面試中的高頻考點,也是重點難點,動態(tài)規(guī)劃類型題目靈活多變,難度系數(shù)也相對較高,往往我們做不好動態(tài)規(guī)劃的題目就會與心儀的offer失之交臂,本篇文章我們就一起來研究一下動態(tài)規(guī)劃設(shè)計股票買賣最佳時機
    2022-10-10

最新評論

罗源县| 大荔县| 韶关市| 德格县| 临泉县| 安溪县| 北票市| 会泽县| 宜昌市| 湟源县| 郸城县| 石林| 壤塘县| 涡阳县| 朝阳区| 伊川县| 和林格尔县| 澎湖县| 常德市| 孝感市| 岳普湖县| 睢宁县| 明星| 商丘市| 神木县| 马龙县| 广昌县| 霍林郭勒市| 常山县| 马鞍山市| 邯郸市| 平邑县| 工布江达县| 阜平县| 九江市| 彰化县| 什邡市| 广德县| 分宜县| 富宁县| 特克斯县|