json-repair 是一个在应用层为 LLMs(大语言模型)生成异常 JSON 提供修复的 Java 库。基于 json-repair 可以简单高效并准确的实现异常 JSON 的修复。
要想使用 json-repair,只需将其作为依赖添加到你的 Java 项目中即可。 Maven 配置如下:
<dependency>
<groupId>io.github.haibiiin</groupId>
<artifactId>json-repair</artifactId>
<version>0.3.0</version>
</dependency>
Gradle 配置如下:
implementation 'io.github.haibiiin:json-repair:0.3.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.3.0 版本 json-repair 支持修补的所有 JSON 异常。
基于当前 0.3.0 版本的功能如下:
实现对 JSON 字符串基本修补功能:
实现对基于文本字符串的 JSON 提取功能:
你可以通过运行 BenchmarkTests 进行更多场景的性能测试
基于当前 0.3.0 版本的性能测试如下:
--AverageTime --NANOSECONDS --Warmup-5-1-SECONDS
Benchmark (anomalyJSON) Mode Cnt Score Error Units
BenchmarkTests.testSimpleRepairStrategy {"f":"v", "f2":"v2" avgt 5 9077.407 ± 5268.919 ns/op
BenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1 avgt 5 21058.074 ± 2600.312 ns/op
BenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1,2], "o1":{"f1":"v1"}, avgt 5 18696.069 ± 3740.596 ns/op
BenchmarkTests.testSimpleRepairStrategy "f":"v", "a":[1,2], "o1":{"f1":"v1"} avgt 5 21853.925 ± 343.950 ns/op
BenchmarkTests.testSimpleRepairStrategy f:v avgt 5 45642.245 ± 11680.611 ns/op
--AverageTime --MILLISECONDS --Warmup-5-1-SECONDS
Benchmark (anomalyJSON) Mode Cnt Score Error Units
BenchmarkTests.testSimpleRepairStrategy {"f":"v", "f2":"v2" avgt 5 0.012 ± 0.008 ms/op
BenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1 avgt 5 0.061 ± 0.112 ms/op
BenchmarkTests.testSimpleRepairStrategy {"f":"v", "a":[1,2], "o1":{"f1":"v1"}, avgt 5 0.037 ± 0.048 ms/op
BenchmarkTests.testSimpleRepairStrategy "f":"v", "a":[1,2], "o1":{"f1":"v1"} avgt 5 0.035 ± 0.054 ms/op
BenchmarkTests.testSimpleRepairStrategy f:v avgt 5 0.094 ± 0.151 ms/op
你可以通过查看 报告 了解项目测试覆盖率详情。
通过提供参考 JSON 样式,对异常 JSON 进行更准确的修正;
将代码克隆到本地后,在项目根目录下,编译并安装所有模块到 Maven 本地仓库缓存,同时会生成 ANTLR .g4
语法文件对应的解析器 Java 类,这样在 IDE 就不会有相关的编译错误了。
mvnw install