国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java json 庫之 jackson

y1chuan / 3784人閱讀

摘要:是一個庫,提供了完備的解析,序列化以及反序列化功能依賴配置在里面添加依賴配置解析調用就能講字符串解析成一個對象,然后通過方法就可以獲取中各個字段的值了,這種方式可以用來讀取格式的配置文件,可以用一個打開特性,可以在里面加入注釋

jackson 是一個 java json 庫,提供了完備的 json 解析,序列化以及反序列化功能

依賴配置

在 build.gradle 里面添加依賴配置

compile group: "com.fasterxml.jackson.core", name: "jackson-core", version: "2.9.4"
compile group: "com.fasterxml.jackson.core", name: "jackson-databind", version: "2.9.4"
compile group: "com.fasterxml.jackson.core", name: "jackson-annotations", version: "2.9.4"
json 解析
String jsonString = "{"name": "hatlonely" /* comment */, "birthday": "2018-03-18 15:26:37", "mails": ["hatlonely@foxmail.com", "hatlonely@gmail.com"]}";

JsonFactory jsonFactory = new JsonFactory();
jsonFactory.enable(Feature.ALLOW_COMMENTS);
ObjectMapper objectMapper = new ObjectMapper(jsonFactory);
JsonNode node = objectMapper.readTree(jsonString);

assertThat(node.path("name").asText(), equalTo("hatlonely"));
assertThat(node.path("birthday").asText(), equalTo("2018-03-18 15:26:37"));
assertThat(node.path("mails").size(), equalTo(2));
assertThat(node.path("mails").path(0).asText(), equalTo("hatlonely@foxmail.com"));
assertThat(node.path("mails").path(1).asText(), equalTo("hatlonely@gmail.com"));

調用 ObjectMapper.readTree 就能講 json 字符串解析成一個 JsonNode 對象,然后通過 path 方法就可以獲取 json 中各個字段的值了,這種方式可以用來讀取 json 格式的配置文件,可以用一個 JsonFactory 打開 ALLOW_COMMENTS 特性,可以在 json 里面加入注釋

序列化與反序列化 首先定義一個對象
class Person {
    String name;

    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
    Date birthday;

    @JsonProperty("mails")
    List emails;

    // 省略了 getter/setter
}

除了支持基本的數(shù)據(jù)類型,還支持 List 和 Map 類型,甚至還支持 Date 類型,Date 類型默認的格式是 ISO8601 格式,也可以通過 @JsonFormat 指定日期格式,通過 @JsonProperty 指定字段在 json 中的字段名

序列化
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

Person person = new Person();
person.setName("hatlonely");
person.setBirthday(dateFormat.parse("2018-03-18 15:26:37"));
person.setEmails(Arrays.asList("hatlonely@foxmail.com", "hatlonely@gmail.com"));

ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(person);

assertThat(jsonString, equalTo(
        "{"name":"hatlonely","birthday":"2018-03-18 03:26:37","mails":["hatlonely@foxmail.com","hatlonely@gmail.com"]}"));

使用 ObjectMapper.writeValueAsString 方法就可以序列化成 string

反序列化
String jsonString = "{"name": "hatlonely", "birthday": "2018-03-18 15:26:37", "mails": ["hatlonely@foxmail.com", "hatlonely@gmail.com"]}";

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Person person = objectMapper.readValue(jsonString, Person.class);

assertThat(person.getName(), equalTo("hatlonely"));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
assertThat(person.getBirthday(), equalTo(dateFormat.parse("2018-03-18 15:26:37")));
assertThat(person.getEmails(), equalTo(Arrays.asList("hatlonely@foxmail.com", "hatlonely@gmail.com")));

使用 ObjectMapper.readValue 方法就能實現(xiàn)反序列化,可以通過 configure 方法設置碰到未知的屬性不拋異常

參考鏈接

Jackson JSON Tutorial:http://www.baeldung.com/jackson

Jackson maven 倉庫:http://mvnrepository.com/sear...

測試代碼鏈接:https://github.com/hatlonely/...

轉載請注明出處 
本文鏈接:http://hatlonely.com/2018/03/...

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68854.html

相關文章

  • Java中的JSON數(shù)據(jù)綁定框架Jackson使用介紹

    摘要:系列文章地址文檔可以輕松的將對象轉換成對象和文檔,同樣也可以將轉換成對象。在項目中如果要引入,可以直接利用或者引入注意,項目已經(jīng)自動依賴了與,不需要額外重復引入。 Github 系列文章地址 Jackson jackson-databind文檔 Jackson可以輕松的將Java對象轉換成json對象和xml文檔,同樣也可以將json、xml轉換成Java對象。在項目中如果要引入Jac...

    mengera88 評論0 收藏0
  • 將多個JSON字段映射到單個Java字段

    摘要:簡介本文中,教大家如何使用和將不同的字段映射到單個字段中。這兩個注解將幫助我們把屬性映射到同一字段。因此,將知道文檔中映射到字段的其他字段的名稱。 簡介 本文中,教大家如何使用Jackson和Gson將不同的JSON字段映射到單個Java字段中。 Maven依賴 為了使用Jackson和Gson庫,我們需要在POM中添加以下依賴項: com.google.code.gson ...

    printempw 評論0 收藏0
  • java性能調優(yōu)記錄(線程阻塞)

    摘要:其中內容如下網(wǎng)關的邏輯是讀取請求中的值,根據(jù)字段去內存的路由表中匹配路由,然后轉發(fā)請求到對應的微服務中去。排查測試接口本身的性能發(fā)現(xiàn)接口的可以達到。解決改寫代碼以實現(xiàn)同樣的功能之后進行測試,發(fā)現(xiàn)從提升到了,問題解決。 1. 問題 spring-cloud-gateway 作為統(tǒng)一的請求入口,負責轉發(fā)請求到相應的微服務中去。 采用的 Spring Cloud 的版本為 Finchley ...

    AndroidTraveler 評論0 收藏0
  • SpringMVC接收和響應json數(shù)據(jù)

    摘要:客戶端提交阻止默認事件得到搜索框數(shù)據(jù)值轉為的方法失敗啦當前請求方式為控制臺輸出當前請求方式為客戶端彈窗三以方式接收以數(shù)組形式傳遞客戶端失敗啦注意傳遞到后端時應為的格式數(shù)據(jù),否則可能會出現(xiàn)錯誤。 前后端的數(shù)據(jù)交互,除了通過form表單進行提交外,也可以通過ajax向后端傳遞和接收json格式數(shù)據(jù)(這種方式可以實現(xiàn)請求數(shù)據(jù)和頁面分離)。本文將總結一下在Spring MVC中接收和響應jso...

    JowayYoung 評論0 收藏0
  • python三方庫之requests-快速上手

    摘要:基于發(fā)送請求發(fā)送請求發(fā)送請求其他請求接口與請求類型一致,如等。如果請求返回或狀態(tài)碼,調用會拋出此異常。請求超過配置的最大重定向數(shù)。 基于2.21.0 發(fā)送請求 發(fā)送GET請求: r = requests.get(https://api.github.com/events) 發(fā)送POST請求: r = requests.post(https://httpbin.org/post, dat...

    xioqua 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<