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

ASP.NET Core 8返回JsonResult时字符串列表单引号替代双引号问题

问题分析与解决

核心误解澄清

你在浏览器控制台看到的单引号数组(['test1', 'test2', ...])只是浏览器的格式化展示方式,ASP.NET Core的JsonResult默认使用System.Text.Json序列化,生成的是完全符合JSON规范的双引号格式内容(["test1", "test2", ...]),不存在序列化错误。

解析失败的真正原因

你的JavaScript代码存在逻辑错误:$.get会根据响应的Content-Type自动解析JSON数据,回调函数中的参数e已经是解析完成的数组对象,而非JSON字符串。此时调用jQuery.parseJSON(e),会先将数组对象转为字符串(也就是你看到的单引号格式),再尝试解析,这自然不符合JSON规范,导致解析失败。

解决方案

直接移除多余的jQuery.parseJSON调用,直接使用e即可,它已经是你需要的字符串数组。

修正后的JavaScript代码

function getFormulaSearchPath(id, callback) 
{
    var getFormulaSearchPathUrl = "@(Html.Raw(WebUtility.UrlDecode(Url.Action("RemotesearchGetPath", "Home"))))";
    var request = {
        id: id // 移除未使用的DataSetId参数
    };
    
    $.get(getFormulaSearchPathUrl, request, function (e) {
        console.log("getFormulaSearchPath", e); // e已经是解析好的字符串数组
        console.log('paths', e); // 直接使用e即可
        if(callback)
            callback(e);
    });
}

可选优化:明确指定响应类型

可以给$.get添加dataType: 'json'参数,明确告知jQuery预期接收JSON格式响应,代码可读性更强:

$.get({
    url: getFormulaSearchPathUrl,
    data: request,
    dataType: 'json',
    success: function (e) {
        console.log("getFormulaSearchPath", e);
        console.log('paths', e);
        if(callback)
            callback(e);
    }
});

验证实际响应格式的方法

如果想确认真实的响应内容,可在浏览器开发者工具的「网络」标签中找到该请求,查看「响应」或「预览」标签,这里会显示标准的双引号JSON数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:51:02