这是Python版本json-repair的Java实现,提供了修复无效JSON字符串的功能。
- 修复缺少引号的JSON键
- 修复缺少结束括号的JSON
- 修复缺少逗号的JSON
- 支持单引号字符串
- 支持尾随逗号
- 支持JSON注释(// 和 /* */)
- 支持Unicode转义序列
- 支持流式JSON修复
- 提供详细的修复日志
<dependency>
<groupId>com.weisanju</groupId>
<artifactId>json-repair-java</artifactId>
<version>0.0.1</version>
</dependency>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 文件。