
json-repair 是一个在应用层为 LLMs(大语言模型)生成异常 JSON 提供修复的 Java 库。基于 json-repair 可以简单高效并准确的实现异常 JSON 的修复。
要想使用 json-repair,只需将其作为依赖添加到你的 Java 项目中即可。 Maven 配置如下:
<dependency> <groupId>io.github.haibiiin</groupId> <artifactId>json-repair</artifactId> <version>0.4.0</version></dependency>Gradle 配置如下:
implementation 'io.github.haibiiin:json-repair:0.4.0'
接下来你只需要实例化 JSONRepair 并调用 handle() 方法便可以完成异常 JSON 的修复。
JSONRepair repair = new JSONRepair();String correctJSON = repair.handle(mistakeJSON);如果需要从文本字符串中提取出符合 JSON 格式的内容,需要通过 JSONRepairConfig 启用提取功能。
JSONRepairConfig config = new JSONRepairConfig();config.enableExtractJSON();JSONRepair repair = new JSONRepair(config);String correctJSON = repair.handle(mistakeJSON);你可以通过查看 测试用例数据集 或 测试报告 了解当前 0.4.0 版本 json-repair 支持修补的所有 JSON 异常。
基于当前 0.4.0 版本的功能如下:
实现对 JSON 字符串基本修补功能:
实现对基于文本字符串的 JSON 提取功能:
你可以通过运行 BenchmarkTests 进行更多场景的性能测试
基于当前 0.4.0 版本的性能测试如下:
--AverageTime --NANOSECONDS --Warmup-5-1-SECONDSBenchmark (anomalyJSON) Mode Cnt Score Error UnitsBenchmarkTests.testSimpleRepairStrategy {"f":"v", "f2":"v2" avgt 5 114767.597 ± 246035.480 ns/opBenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1 avgt 5 42658.921 ± 66863.970 ns/opBenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1,2], "o1":{"f1":"v1"}, avgt 5 410883.872 ± 703643.753 ns/opBenchmarkTests.testSimpleRepairStrategy "f":"v", "a":[1,2], "o1":{"f1":"v1"} avgt 5 180096.819 ± 535679.217 ns/opBenchmarkTests.testSimpleRepairStrategy f:v avgt 5 252954.401 ± 908076.158 ns/op--AverageTime --MILLISECONDS --Warmup-5-1-SECONDSBenchmark (anomalyJSON) Mode Cnt Score Error UnitsBenchmarkTests.testSimpleRepairStrategy {"f":"v", "f2":"v2" avgt 5 0.179 ± 0.256 ms/opBenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1 avgt 5 0.215 ± 0.373 ms/opBenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1,2], "o1":{"f1":"v1"}, avgt 5 0.070 ± 0.152 ms/opBenchmarkTests.testSimpleRepairStrategy "f":"v", "a":[1,2], "o1":{"f1":"v1"} avgt 5 0.306 ± 0.121 ms/opBenchmarkTests.testSimpleRepairStrategy f:v avgt 5 0.125 ± 0.243 ms/op
你可以通过查看 报告 了解项目测试覆盖率详情。
通过提供参考 JSON 样式,对异常 JSON 进行更准确的修正;
将代码克隆到本地后,在项目根目录下,编译并安装所有模块到 Maven 本地仓库缓存,同时会生成 ANTLR .g4 语法文件对应的解析器 Java 类,这样在 IDE 就不会有相关的编译错误了。
mvnw install