HResult=0x80131500 Message='<' is an invalid start of a value. LineNumber: 0 | B...
🚨 错误信息
`System.Text.Json.JsonReaderException
HResult=0x80131500
Message='<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
Source=System.Text.Json
StackTrace:
在 System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
`
🤖 AI解决方案
错误翻译
原文:'<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
译文:'<' 不是一个有效的值起始字符。行号:0 | 行内字节位置:0。
原因分析
- 根本原因:JSON解析器期望接收有效的JSON数据,但实际接收到的字符串以
'<'字符开头,这通常是XML或HTML格式的标志 - 具体位置:在JSON解析的起始位置(行号0,字节位置0)检测到非法字符
解决方案
情况1:如果应该是JSON格式但收到XML
// 确保接收的是纯JSON数据,不是XML包装的JSON
string jsonData = responseContent.Trim();
// 或者需要从XML中提取JSON部分
if (jsonData.StartsWith("<"))
{
// 从XML响应中提取JSON内容
jsonData = ExtractJsonFromXml(responseContent);
}
// 然后进行JSON反序列化
var result = JsonSerializer.Deserialize<T>(jsonData);
情况2:API返回格式错误,需要明确指定Content-Type
// 设置HTTP请求头,明确要求JSON格式
var request = new HttpRequestMessage
{
RequestUri = new Uri(apiUrl),
Method = HttpMethod.Get,
Headers = { { "Accept", "application/json" } }
};
️ 预防措施
// 预防性检查示例
public static bool IsValidJson(string input)
{
input = input.Trim();
return (input.StartsWith("{") && input.EndsWith("}")) ||
(input.StartsWith("[") && input.EndsWith("]"));
}