You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.NET Core控制器解析JSON文件遇Newtonsoft.Json.JsonReaderException报错

解决JSON解析异常的方案

1. 修复属性大小写不匹配问题

你的模型类DrawInfo中属性coordinates是小写开头,但JSON里的键是Coordinates(大写C),Newtonsoft.Json默认区分大小写,会导致序列化/反序列化时无法匹配。可以通过两种方式解决:

  • 方式一:给模型属性添加特性指定对应JSON键名
namespace WebUygAPI.Models
{
    public class DrawInfo
    {
        public string username { get; set; } 
        public string number { get; set; }
        [JsonProperty("Coordinates")]
        public string coordinates { get; set; }
    }
}
  • 方式二:配置Newtonsoft.Json忽略大小写
var settings = new JsonSerializerSettings
{
    ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var drawInfos = JsonConvert.DeserializeObject<List<DrawInfo>>(o1, settings);

2. 处理文件编码导致的隐藏字符问题

如果JSON文件带有UTF-8 BOM(字节顺序标记),会触发“unexpected character”错误。修改StreamReader的编码参数,明确指定不含BOM的UTF-8编码:

using (StreamReader file = new StreamReader(filePath, new UTF8Encoding(false)))
{
    string o1 = await file.ReadToEndAsync();
    // 后续解析逻辑
}

同时建议使用异步读取方法ReadToEndAsync,匹配控制器的async Task定义。

3. 完善解析代码并捕获详细错误

你的控制器目前仅读取了文件内容,未执行解析操作。添加解析逻辑并捕获详细异常,方便定位问题:

[HttpGet]
[Route("GetDraws")]
public async Task<IActionResult> get()
{
    string filePath = @"C:\Users\Casper\source\repos\WebUygAPI\WebUygAPI\LineData.json";
    try
    {
        using (StreamReader file = new StreamReader(filePath, new UTF8Encoding(false)))
        {
            string o1 = await file.ReadToEndAsync();
            var settings = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };
            var drawInfos = JsonConvert.DeserializeObject<List<DrawInfo>>(o1, settings);
            return Ok(drawInfos);
        }
    }
    catch (JsonReaderException ex)
    {
        return BadRequest($"JSON解析错误:{ex.Message},位置:{ex.LineNumber}:{ex.LinePosition}");
    }
    catch (Exception ex)
    {
        return BadRequest($"读取或解析失败:{ex.Message}");
    }
}

4. 验证JSON格式合法性

将读取到的o1内容复制到本地文本编辑器,检查是否存在不可见的特殊字符;也可以用本地JSON验证工具确认格式是否完全合规。


内容的提问来源于stack exchange,提问作者Onur Bozkurt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:01:19