如何验证JSON文件格式有效性?含缺失闭合括号场景处理
JSON格式验证方案
- 利用
JsonDocument.ParseAsync的异常捕获实现验证JsonDocument.ParseAsync在遇到无效JSON(比如缺失闭合方括号])时会抛出JsonException,通过try-catch块包裹解析逻辑即可判断格式有效性:
_loadedFile = e.File; var utf8Json = _loadedFile.OpenReadStream(maxAllowedSize: 1024 * 1024 * 10); try { using var jsonDocument = await JsonDocument.ParseAsync(utf8Json); // 解析成功,JSON格式有效 } catch (JsonException) { // 解析失败,JSON格式无效,在此处理错误逻辑 // 异常消息会包含具体错误原因,比如缺失闭合括号的提示 }
- 针对末尾缺失
]的前置检查(可选)
如果需要专门针对末尾缺]的场景做前置验证,可以先读取流的末尾字符,但这种方法仅覆盖特定情况,建议配合异常捕获使用:
_loadedFile = e.File; using var stream = _loadedFile.OpenReadStream(maxAllowedSize: 1024 * 1024 * 10); // 定位到流末尾前1个字节的位置 stream.Seek(-1, SeekOrigin.End); var buffer = new byte[1]; stream.Read(buffer, 0, 1); var lastChar = Encoding.UTF8.GetString(buffer); if (lastChar != "]") { // 检测到末尾缺失闭合方括号,处理错误 } else { // 回到流开头执行解析 stream.Seek(0, SeekOrigin.Begin); try { using var jsonDocument = await JsonDocument.ParseAsync(stream); // JSON格式有效 } catch (JsonException) { // 存在其他格式错误,处理逻辑 } }
注意:
JsonDocument实现了IDisposable接口,使用using声明可以自动释放资源,避免内存泄漏。
内容的提问来源于stack exchange,提问作者Sarahrb
相关产品推荐
相关产品推荐

