新聞

OpenJDK將簡易JSON API提案列為JEP 540候選案,計畫在JDK提供基本的JSON解析與產生能力,讓Java程式處理簡單JSON資料時,不必另外加入外部函式庫。該提案目前仍處於候選階段,API仍可能在孵化期間調整,尚未指定目標JDK版本。

JSON是網路服務與應用程式交換資料時常用的格式,但Java標準函式庫長期沒有通用的JSON處理介面。開發者目前多半需要自行選擇外部套件,JEP 540則希望為較單純的工作提供JDK內建選項,減少安裝、版本管理及安全維護等額外負擔。

新介面會將JSON文字解析成樹狀資料結構。開發者可依欄位名稱或陣列位置逐層取得內容,再轉為Java字串、數字、布林值、鍵值對映(Map)或串列(List)。若JSON格式有誤,解析器會回報錯誤位置;若欄位不存在或資料類型不符,則會回報錯誤值在JSON中的路徑與位置,協助找出問題。

JEP 540採取嚴格的解析規則,只接受符合RFC 8259語法的JSON,不支援註解或尾端逗號,另外也把物件中的重複欄位名稱視為錯誤。RFC 8259建議欄位名稱保持唯一,但未完全禁止重複名稱。提案認為,不同JSON工具對重複名稱的處理方式可能不同,容易讓各工具讀出不同結果,也可能造成安全問題。

JEP 540並非要取代現有完整JSON函式庫,新介面不提供Java物件與JSON之間的自動轉換,也不能在資料尚未全部載入時,逐段處理大型文件。整份JSON資料必須先載入記憶體,因此不適合無法一次載入的超大型文件。需要進階轉換、客製設定或擴充語法的應用,仍須使用外部函式庫。

內建JSON能力也可能供JDK本身使用,OpenJDK指出,JDK不能依賴外部函式庫,之後可利用JSON處理具有陣列或多層結構的設定資料,補足傳統屬性檔案不易表達複雜內容的限制。