JavaScript

JSON Repair:自动修復格式錯誤的 JSON

JSON Repair 是一个 JavaScript 函式库,透過修復常見錯誤(如遺漏引号、尾隨逗号和未跳脫字元)来修復格式錯誤的 JSON。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
JSON Repair:自动修復格式錯誤的 JSON

很少有事情比从 API、设定档或资料匯出中收到格式錯誤的 JSON 更令人沮喪。錯誤讯息通常难以理解,手动修復大型 JSON 档案既繁瑣又容易出錯。JSON Repair(GitHub 上的 josdejong/jsonrepair)透過提供一个自动偵测和修復常見 JSON 格式錯誤的 JavaScript 函式库来解決这个问题。

由 Jos de Jong(也是 math.js 的开发者)创建,JSON Repair 已成为 JavaScript 生态系统中一个必不可少的工具。它处理全面的 JSON 錯誤范围:金鑰缺少引号、字串值缺少引号、物件和阵列中的尾隨逗号、项目之間遺漏逗号、单引号代替雙引号、未跳脫的换行和制表符、截斷的 JSON,甚至连接的 JSON 字串。

該函式库的修復演算法逐字元地遍歷 JSON 字串,根據上下文套用啟发式規則。这种方法允許它在单次掃描中处理多个同时发生的錯誤,即使从嚴重格式錯誤的输入中也能产生有效的 JSON 输出。當損壞嚴重到無法自动修復时,該函式库会提供清晰的錯誤讯息,指出修復失敗的确切位置和原因。


錯誤偵测与修復流程

JSON Repair 的处理管线将解析与自动錯誤修正结合:

这种方法使 JSON Repair 能够处理具有多个相互作用錯誤的复杂情況,例如一个同时缺少逗号且包含未跳脫字元的截斷 JSON 物件。


支援的錯誤類型和修復方法

錯誤類型范例输入修復动作
缺少金鑰引号{name: “value”}新增引号:{“name”: “value”}
缺少字串引号{“name”: value}新增引号:{“name”: “value”}
尾隨逗号[1, 2,]移除逗号:[1, 2]
遺漏逗号{“a”:1 “b”:2}新增逗号:{“a”:1, “b”:2}
单引号{‘key’: ‘value’}转换为雙引号:{“key”: “value”}
未跳脫换行“line1\nline2”跳脫:“line1\nline2”
截斷 JSON{“a”:1, “b”:优雅关閉:{“a”:1, “b”: null}
连接 JSON{“a”:1}{“b”:2}包装为阵列:[{“a”:1}, {“b”:2}]
註解移除// comment\n{“a”:1}移除註解:{“a”:1}

实际应用

JSON Repair 在幾种常見場景中发挥实际作用。开发网页抓取工具的人使用它来清理嵌入在 HTML 页面中的 JSON 资料,这些资料經常因为模板品質不佳而格式錯誤。API 整合工具在收到来自文件不良或不合規端点的回应时,将其作为備援方案。设定管理系统使用它来解析可能包含錯誤的使用者提供的设定档。

該函式库在开发和除錯期間也很有用。當应用程式产生損壞的 JSON 时,透過 JSON Repair 处理通常可以挽救足够的资料来診斷问题的根本原因。其清晰的錯誤報告会指出 JSON 结构中哪些部分有问题以及原因。


推薦的外部资源


常見问题

什么是 JSON Repair? JSON Repair 是由 Jos de Jong 建立的 JavaScript 函式库,可自动修復格式錯誤的 JSON 字串。

JSON Repair 可以修復哪些類型的錯誤? 可以修復缺少引号、尾隨逗号、遺漏逗号、单引号、未跳脫字元、截斷 JSON 等。

錯誤修正演算法如何运作? 使用逐字元解析方法搭配基于上下文的啟发式修復規則。

可以在 Node.js 和浏览器中使用嗎? 是的,零依賴,可在兩种环境中使用。

对不受信任的输入安全嗎? 是的,不会 eval 或执行任何程式码。


延伸閱读

TAG
CATEGORIES