AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

鮮為人知的 jackson Pointer 語法,超好用!

來源: 責編: 時間:2023-12-05 09:23:50 270觀看
導讀一、語法JSON Pointer 是一個包含零個或多個引用標記的 Unicode 字符串,每個引用標記以 “/” (%x2F) 字符為前綴。如果引用標記包含 “~” (%x7E) 或 “/” (%x2F) 字符,則它們必須分別被編碼為 “~0” 和 “~1”。它

一、語法

JSON Pointer 是一個包含零個或多個引用標記的 Unicode 字符串,每個引用標記以 “/” (%x2F) 字符為前綴。如果引用標記包含 “~” (%x7E) 或 “/” (%x2F) 字符,則它們必須分別被編碼為 “~0” 和 “~1”。它的 ABNF 語法如下:kgw28資訊網——每日最新資訊28at.com

json-pointer = *( "/" reference-token )reference-token = *( unescaped / escaped )unescaped = %x00-2E / %x30-7D / %x7F-10FFFFescaped = "~" ( "0" / "1" )

如果一個 JSON 指針值不符合這個語法,則屬于錯誤的條件。kgw28資訊網——每日最新資訊28at.com

二、語法示例

JSON Pointer 語法所有引號“"” (%x22)、反斜杠“/” (%x5C)和控制字符(%x00-1F)的實例必須被轉義。例如,給定以下JSON文檔kgw28資訊網——每日最新資訊28at.com

{  "foo": ["bar", "baz"],  "": 0,  "a/b": 1,  "c%d": 2,  "e^f": 3,  "g|h": 4,  "i//j": 5,  "k/"l": 6,  " ": 7,  "m~n": 8}

那么以下 JSON 字符串應用標記和對應的值:kgw28資訊網——每日最新資訊28at.com

""           // 讀取整個文檔"/foo"       ["bar", "baz"]"/foo/0"    "bar" // 讀取數組、集合中的第0個元素"/"          0"/a~1b"      1"/c%d"       2"/e^f"       3"/g|h"       4"/i//j"      5"/k/"l"      6"/ "         7"/m~0n"      8

三、復雜 Json 示例

示例 json 文本(節選自筆者掘金用戶信息):kgw28資訊網——每日最新資訊28at.com

{    "err_no": 0,    "err_msg": "success",    "data": {        "user_name": "如夢技術",        "description": "生活不止眼前的茍且,還有詩和遠方的田野。",        "blog_address": "https://www.dreamlu",        "user_growth_info": {            "user_id": 1591748566975837,            "jpower": 4056,            "jscore": 1208.1,            "jpower_level": 4,            "jscore_level": 5,            "jscore_title": "先鋒掘友",            "author_achievement_list": [],            "vip_level": 1,            "vip_title": "初學乍練",            "jscore_next_level_score": 2000,            "jscore_this_level_mini_score": 500,            "vip_score": 0        }    }}

需求是只需要獲取 “jscore_title” 字段,獲取這個值按照上文的語法我們的完整引用標記為:/data/user_growth_info/jscore_title。筆者采用 mica 中的 mica-core 中的 Jsonutil作為 jackson 的輔助工具類(這應該也是市面上最好用和最全的一個 jackson json 工具類)。示例 java 代碼:kgw28資訊網——每日最新資訊28at.com

// 讀取 json 為 JsonNodeJsonNode jsonNode = JsonUtil.readTree(json);// 調用 at 方法,傳入 JSON Pointer 引用標記JsonNode titleNode = jsonNode.at("/data/user_growth_info/jscore_title");// 讀取節點文本String jsCoreTitle = titleNode.asText();System.out.println(jsCoreTitle); // 先鋒掘友

注意:使用 JSON Pointer 語法獲取不存在的節點時也不會報錯,在使用 asText、asInt 等方法獲取節點的值時會默認返回 null,當然這些方法也都有個帶默認值的方法,非常好用。另外我們也可以將某個節點轉換成 Java Bean,例如上面的 user_growth_info節點,示例代碼如下:UserGrowthInfo Bean(使用 idea GsonFormatPlus 插件生成)kgw28資訊網——每日最新資訊28at.com

@Datapublic class UserGrowthInfo {    @JsonProperty("user_id")    private Long userId;    @JsonProperty("jpower")    private Integer jpower;    @JsonProperty("jscore")    private Double jscore;    @JsonProperty("jpower_level")    private Integer jpowerLevel;    @JsonProperty("jscore_level")    private Integer jscoreLevel;    @JsonProperty("jscore_title")    private String jscoreTitle;    @JsonProperty("author_achievement_list")    private List<?> authorAchievementList;    @JsonProperty("vip_level")    private Integer vipLevel;    @JsonProperty("vip_title")    private String vipTitle;    @JsonProperty("jscore_next_level_score")    private Integer jscoreNextLevelScore;    @JsonProperty("jscore_this_level_mini_score")    private Integer jscoreThisLevelMiniScore;    @JsonProperty("vip_score")    private Integer vipScore;}

讀取 json 并轉換成 UserGrowthInfo Bean:kgw28資訊網——每日最新資訊28at.com

// 讀取 json 為 JsonNodeJsonNode jsonNode = JsonUtil.readTree(json);// 讀取 user_growth_info 節點JsonNode userGrowthInfoNode = jsonNode.at("/data/user_growth_info");// 轉換成 UserGrowthInfo beanUserGrowthInfo userGrowthInfo = JsonUtil.treeToValue(userGrowthInfoNode, UserGrowthInfo.class);System.out.println(userGrowthInfo);// 輸出結果:UserGrowthInfo(userId=1591748566975837, jpower=4056, jscore=1208.1, jpowerLevel=4, // jscoreLevel=5, jscoreTitle=先鋒掘友, authorAchievementList=[], vipLevel=1, vipTitle=初學乍練, // jscoreNextLevelScore=2000, jscoreThisLevelMiniScore=500, vipScore=0)

四、總結

Jackson JSON Pointer 語法非常簡單易用,Jackson 官網文檔改版之后這個文檔很難找到了。筆者從14年開始使用,并且將她融入到很多 mica 組建中。例如使用 mica-http 來讀取我們想要的結果:kgw28資訊網——每日最新資訊28at.com

// 讀取 linkedin 郵箱private String getUserEmail(String accessToken) {    return HttpRequest.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))")            .addHeader("Host", "api.linkedin.com")            .addHeader("Connection", "Keep-Alive")            .addHeader("Authorization", "Bearer " + accessToken)            .execute()            .asJsonNode()            .at("/elements/0/handle~0/emailAddress")            .asText();}

Jackson 還是非常好用的,希望此篇文章對大家有所幫助!更多精彩好文敬請關注我們!!!kgw28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-38107-0.html鮮為人知的 jackson Pointer 語法,超好用!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 中國東航:第三架 C919 國產大飛機預計將于近期交付

下一篇: 數據處理利器:Pandas帶你游刃有余操控結構化數據

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續為本月發布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • 中興AX5400Pro+上手體驗:再升級 雙2.5G網口+USB 3.0這次全都有

    2021年11月的時候,中興先后發布了兩款路由器產品,中興AX5400和中興AX5400 Pro,從產品命名上就不難看出這是隸屬于同一系列的,但在外觀設計上這兩款產品可以說是完全沒一點關系
  • 分布式系統中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統的小伙伴們來說,一提起分布式系統,就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統
  • 不容錯過的MSBuild技巧,必備用法詳解和實踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構建引擎,用于在.NET Framework和.NET Core應用程序中自動化構建過程。它是Visual Studio的構建引擎,可在命令行或其他構建工具中使用
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • 得物寵物生意「狂飆」,發力“它經濟”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內的&ldquo;在線鑒別&rdquo;,可找到鑒別寵物的選項。通過上傳自家寵物的部位細節,就能收獲擁有專業資質認證的得物鑒
  • Meta盲目擴張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創意日前,Meta創始人兼CEO 馬克&middot;扎克伯發布公開信,宣布Meta計劃裁員超11000人,占其員工總數13%。他公開承認了自己的預判失誤:&ldquo;不僅
Top