使用JObject.Parse解析API返回字符串时遭遇无效字符解析错误
问题分析与解决
错误原因
API返回的JSON格式不合法:nbf和iat字段的时间值没有用双引号包裹,JSON解析器会把2024-04-17T16:28:14.509+0800当成数字解析,但遇到T字符时无法识别,因此抛出错误。
解决方法
- 修复API返回格式:联系API提供者,让他们将时间字段值用双引号包裹,正确的JSON格式如下:
{"nbf":"2024-04-17T16:28:14.509+0800", "iat":"2024-04-17T16:28:14.509+0800", "iss":"https://google.com"} - 本地修复字符串后解析:如果无法修改API返回,可在解析前手动给时间字段值添加双引号,示例代码:
string apiResponse = "{\"nbf\":2024-04-17T16:28:14.509+0800, \"iat\":2024-04-17T16:28:14.509+0800, \"iss\":\"https://google.com\" }"; // 用正则替换给nbf、iat后的时间值添加双引号 string fixedJson = Regex.Replace(apiResponse, @"(""nbf"":|""iat"":)([^,}]+)", "$1\"$2\""); JObject obj = JObject.Parse(fixedJson); - 自定义解析设置(不推荐):若使用Newtonsoft.Json,可尝试自定义解析器,但这种方式风险较高,容易引入其他解析问题,不建议优先使用。
内容的提问来源于stack exchange,提问作者Ankita Agarwal
相关产品推荐
相关产品推荐

