一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java使用ObjectMapper的簡單示例

Java使用ObjectMapper的簡單示例

2020-09-18 13:04學海無涯519 JAVA教程

這篇文章主要介紹了Java使用ObjectMapper的簡單示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、什么是ObjectMapper?

  • ObjectMapper類是Jackson庫的主要類,它提供一些功能將數據集或對象轉換的實現。
  • 它將使用JsonParser和JsonGenerator實例來實現JSON的實際讀/寫。

二、ObjectMapper怎么使用?

2.1 配置

2.1.1 普通Java項目(引入如下依賴即可)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.5</version>
</dependency>
 
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.5</version>
</dependency>
 
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.5</version>
</dependency>

2.1.2 Sring Boot項目

重要說明:

由于Spring Boot的自動配置JacksonAutoConfiguration中有如下圖所示的依賴引入和配置,所以不需要我們額外配置

Java使用ObjectMapper的簡單示例

Java使用ObjectMapper的簡單示例

2.2 實戰

User類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class User implements Serializable {
 
  private static final long serialVersionUID = 1L;
 
  // 姓名
  private String name;
 
  // 性別
  private String sex;
 
  // 年齡
  private Integer age;
}

2.2.1 Java對象、集合轉JSON

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) throws IOException {
 
    ObjectMapper objectMapper = new ObjectMapper();
 
    User user = new User();
    user.setName("張三");
    user.setAge(20);
    user.setSex("男");
 
    List<User> userList = new ArrayList<>();
    userList.add(user);
 
    // 對象轉換為JSON
    String userJsonString = objectMapper.writeValueAsString(user);
    // 集合轉換為JSON
    String userListJsonString = objectMapper.writeValueAsString(userList); }

2.2.2 JSON轉Java對象、集合

?
1
2
3
4
5
// JOSN轉對象(java對象)
    User newUser = objectMapper.readValue(userJsonString, User.class);
 
    // JOSN轉集合(集合)
    List<User> list = objectMapper.readValue(userListJsonString, new TypeReference<List<User>>(){});

2.2.3json轉JsonNode、ObjectNode

說明:

Jackson的JsonNode和ObjectNode兩個類,前者是不可變的,一般用于讀取。后者可變,一般用于創建Json對象圖。

?
1
2
3
4
5
6
7
8
9
10
11
12
// json轉JsonNode
    JsonNode jsonNode = objectMapper.readTree(userJsonString);
    String sex = jsonNode.get("sex").asText();
 
    // JsonNode轉ObjectNode
    ObjectNode objectNode = (ObjectNode)jsonNode;
 
    // json轉JsonNode
    JsonNode jsonNodeList = objectMapper.readTree(userListJsonString);
 
    // JsonNode轉ObjectNode
    ArrayNode arrayNode = (ArrayNode)jsonNodeList;

2.2.4 jsonNode轉對象、集合

?
1
2
3
4
5
6
7
// jsonNode轉為json字符串
    String jsonNodeString = objectMapper.writeValueAsString(jsonNode);
    String jsonNodeListString = objectMapper.writeValueAsString(jsonNodeList);
 
    // json字符串轉對象、集合
    User user1 = objectMapper.readValue(jsonNodeString, User.class);
    List<User> list1 = objectMapper.readValue(jsonNodeListString, new TypeReference<List<User>>() {});

2.3 注意事項

2.3.1微服務中從其他服務獲取過來的對象,如果從Object強轉為自定義的類型會報錯,利用ObjectMapper轉換。

正確示例:

  說明:Schedule類、OutpOrderBill類都是類似于User類的Java對象。

?
1
2
3
4
5
6
7
// 對象
Schedule schedule = objectMapper.convertValue(callNurseCenterService.getSchedule(registRecord.getScheCode()).getData(), Schedule.class);
 
// 泛型為對象的集合
List<OutpOrderBill> outpOrderBillList = objectMapper.convertValue(
              callChargeCenterService.getOrderBillByOrderCode(orders.getOrgCode(),orders.getOrderCode()).getData(),
              new TypeReference<List<OutpOrderBill>>() {});

2.3.2 上面轉換的過程中,如果返回的字段你不是都需要,需要忽略其中的幾個字段,在自定義的類中添加標紅注解

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class User implements Serializable {
 
  private static final long serialVersionUID = 1L;
 
   ////提供有這個參數,但是不想獲取
//  // 姓名
//  private String name;
 
  // 性別
  private String sex;
 
  // 年齡
  private Integer age;
}

如果不想添加注解,可以使用下面兩種方式

第一種方式:

?
1
2
ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD,Visibility.ANY);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

第二種方式:

?
1
2
ObjectMapper objectMapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

2.3.3 在轉換的過程中,有可能有的屬性被設成空就不序列化等的需求,可以在類的屬性上或直接在類上加上一下注解。用在屬性上就是只針對一個屬性,用在類上就是針對類里的所有屬性。

?
1
2
3
4
5
6
7
8
9
@JsonInclude(Include.NON_NULL)
 
@JsonInclude(Include.Include.ALWAYS) 默認
 
@JsonInclude(Include.NON_DEFAULT) 屬性為默認值不序列化
 
@JsonInclude(Include.NON_EMPTY) 屬性為 空(“”) 或者為 NULL 都不序列化
 
@JsonInclude(Include.NON_NULL) 屬性為NULL 不序列化

參考網址:

Jackson-1.9.9在線文檔

到此這篇關于Java使用ObjectMapper的簡單示例的文章就介紹到這了,更多相關Java使用ObjectMapper內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/wgx519/p/13688615.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天色天天综合网 | 久久中文字幕亚洲 | 星球大战成人h无删减版 | 久久亚洲午夜牛牛影视 | 午夜爱爱爱爱爽爽爽视频网站 | 成人观看免费大片在线观看 | 無码一区中文字幕少妇熟女H | 亚洲一欧洲中文字幕在线 | 久久99热狠狠色AV蜜臀 | 午夜dj免费视频观看社区 | 97色| 91制片厂制作传媒破解版免费 | 亚洲日本va中文字幕 | 国产精品香蕉在线观看不卡 | 99热精品69堂国产 | 免费a视频在线观看 | 99久热只有精品视频免费看 | 国产新疆成人a一片在线观看 | 久久伊人电影 | 人人揉人人爽五月天视频 | 免费观看视频在线 | 爱福利视频一区二区 | 国产日韩视频一区 | а天堂中文最新版在线官网视频 | 国产成人综合手机在线播放 | 亚洲精品国产成人 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | jizz 日本亚洲| 欧美深夜在线 | 免费午夜影片在线观看影院 | 国产精品久久久久久久久免费hd | 九九九精品视频 | 国产香蕉国产精品偷在线观看 | www.青草视频 | 亚洲精品www久久久久久久软件 | 国产欧美精品 | 国产一区在线播放 | 国产成人免费片在线视频观看 | 欧美裸妇| 4455永久在线观免费看片 | 调教催眠 |