LLm json output repair for json
Find a file
2025-08-08 09:19:50 +08:00
src feat:移动目录 2025-08-08 09:19:50 +08:00
.gitignore Update .gitignore for Java project 2025-08-07 19:40:22 +08:00
LICENSE feat:初步更新 2025-08-07 19:56:51 +08:00
pom.xml feat:移动目录 2025-08-08 09:19:50 +08:00
README.md feat:移动目录 2025-08-08 09:19:50 +08:00

JSON Repair Java

这是Python版本json-repair的Java实现,提供了修复无效JSON字符串的功能。

功能特性

  • 修复缺少引号的JSON键
  • 修复缺少结束括号的JSON
  • 修复缺少逗号的JSON
  • 支持单引号字符串
  • 支持尾随逗号
  • 支持JSON注释(// 和 /* */)
  • 支持Unicode转义序列
  • 支持流式JSON修复
  • 提供详细的修复日志

安装

Maven依赖

<dependency>
    <groupId>com.weisanju</groupId>
    <artifactId>json-repair-java</artifactId>
    <version>0.0.1</version>
</dependency>

Gradle依赖

implementation 'com.weisanju:json-repair-java:0.0.1'

依赖项

  • Java 8+
  • Jackson 2.15.2+

基本用法

import io.github.weisanju.jsonrepair.JsonRepair;

// 修复JSON字符串
String invalidJson = "{name: \"John\", age: 30}";
        String repairedJson = JsonRepair.repairJson(invalidJson);
System.out.

        println(repairedJson);
// 输出: {"name":"John","age":30}

解析为对象

// 解析为Java对象
Object obj = JsonRepair.loads(invalidJson);
if(obj instanceof Map){
Map<String, Object> map = (Map<String, Object>) obj;
    System.out.

println("name: "+map.get("name"));
        System.out.

println("age: "+map.get("age"));
        }

从文件加载

// 从文件加载JSON
Object obj = JsonRepair.fromFile("data.json");

// 从Reader加载JSON
try(
FileReader reader = new FileReader("data.json")){
Object obj = JsonRepair.load(reader);
}

启用日志

// 启用修复日志
Object result = JsonRepair.loads(invalidJson, false, true, false);
if(result instanceof Map){
Map<String, Object> resultMap = (Map<String, Object>) result;
    if(resultMap.

containsKey("log")){
List<Map<String, String>> logs = (List<Map<String, String>>) resultMap.get("log");
        for(
Map<String, String> log :logs){
        System.out.

println("修复日志: "+log.get("message"));
        }
        }
        }

高级用法

// 跳过JSON验证,直接进行修复
String repaired = JsonRepair.repairJson(invalidJson, false, true, false);

// 启用流稳定性(用于流式JSON)
Object result = JsonRepair.loads(invalidJson, false, false, true);

// 指定块大小(用于大文件)
Object result = JsonRepair.fromFile("large.json", false, false, 1024 * 1024);

运行测试

# 编译项目
mvn compile

# 运行测试
mvn test

# 运行示例
mvn exec:java -Dexec.mainClass="io.github.weisanju.jsonrepair.JsonRepairTest"

许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。