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

資訊專欄INFORMATION COLUMN

java json 庫之 jackson

y1chuan / 3800人閱讀

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

jackson 是一個(gè) 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"));

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

序列化與反序列化 首先定義一個(gè)對象
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 類型默認(rèn)的格式是 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 方法就能實(shí)現(xiàn)反序列化,可以通過 configure 方法設(shè)置碰到未知的屬性不拋異常

參考鏈接

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

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

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

轉(zhuǎn)載請注明出處 
本文鏈接:http://hatlonely.com/2018/03/...

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68854.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

    摘要:基于發(fā)送請求發(fā)送請求發(fā)送請求其他請求接口與請求類型一致,如等。如果請求返回或狀態(tài)碼,調(diào)用會(huì)拋出此異常。請求超過配置的最大重定向數(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條評論

最新活動(dòng)
閱讀需要支付1元查看
<