使用Json.NET解析JSON时遇“Additional text...”异常的原因排查
问题:Json.NET解析合法JSON时抛出"Additional text encountered"异常
我尝试解析一个JSON对象,plaintext字符串内容如下:
{"expiryDay":1,"expiryMonth":6,"expiryYear":2023,"machineGuid":"a3586fb9-b05e-46f1-a4a0-683a97109e34","name":"Alexander Farley"}
执行代码:
var json = JObject.Parse(plaintext);
抛出异常:
Newtonsoft.Json.JsonReaderException: 'Additional text encountered after finished reading JSON content: . Path '', line 1, position 129.'
该JSON已通过验证确认结构合法,且不存在多根元素,不解为何Json.NET拒绝解析。
排查与解决方法
- 检查字符串末尾的额外字符:异常明确指出额外文本是
.,说明你的plaintext字符串末尾大概率带有一个隐藏的点号,或是空格、换行符这类不可见字符。可以通过输出字符串长度、遍历字符ASCII码来定位问题。 - 预处理清理字符串:解析前对字符串做清理,去除首尾多余字符:
// 先去除首尾空白 var cleanedText = plaintext.Trim(); // 再移除所有非JSON语法允许的字符 cleanedText = System.Text.RegularExpressions.Regex.Replace(cleanedText, @"[^\{\}\[\]\:\,\.\-\w\s\""]", ""); var json = JObject.Parse(cleanedText); - 溯源字符串来源:如果
plaintext来自文件、网络接口或外部日志,确认来源是否在输出时额外追加了字符(比如日志的后缀标记、文件末尾的冗余字节)。
内容的提问来源于stack exchange,提问作者afarley
相关产品推荐
相关产品推荐

