字符串列表的 ASP.NET Core JsonResult 生成带单引号而不是双引号的 JSON

问题描述 投票:0回答:1

在 ASP.NET Core 8 中使用返回 JsonResult 序列化字符串列表时,它会生成一个带有单引号而不是双引号的字符串数组,如下所示。

['测试1'、'测试2'、'测试3'、'测试4']

我期望 JSON 输出如下。

[“测试1”,“测试2”,“测试3”,“测试4”]

据我了解,JSON 字符串数组需要双引号。 因此,我无法使用 javascript/jQuery 解析它。

在我的 ASP.NET Core 控制器中,我使用:

public async Task<JsonResult> RemotesearchGetPath(string id)
{
  var model = await formulaHelper.GetPathTree(id);

  return Json(model);
}

其中模型的类型为字符串列表

public async Task<List<string>> GetPathTree(string id)
{
  var treeId = ParseTreeId(id);

  return await GetPathTree(treeId);
}

在javascript中,我有以下代码,使用console.log查看从服务器返回的json:

function getFormulaSearchPath(id,callback) 
{
    var getFormulaSearchPathUrl = "@(Html.Raw(WebUtility.UrlDecode(Url.Action("RemotesearchGetPath", "Home"))))";
    var request = {
        DataSetId: "@(Model.Database.DatabaseId)",
        id: id};
        
    $.get(getFormulaSearchPathUrl, request, function (e) {
        console.log("getFormulaSearchPath", e)
        var paths = jQuery.parseJSON(e);
        console.log('paths', paths);
            if(callback)
            callback(e);
    });
}

请注意,此 javascript 代码是我的 Razor 代码,因此正在翻译 @(Model.Database.DatabaseId)。 我只是注意到它实际上不再用作操作方法的输入参数,因此可以删除。

jQuery.parseJSON 无法解析带有单引号的 JSON 数组列表,因为它需要双引号。

有什么方法可以用双引号序列化字符串列表吗?

json asp.net-core jsonresult
1个回答
0
投票

在 ASP.NET Core 中,建议使用

IActionResult
而不是
JsonResult
,以便在返回各种响应类型时获得更大的灵活性和一致性。

此外,请确保您的控制器继承自

ControllerBase
而不是
Controller
。这很重要,因为
ControllerBase
是专门为 API 设计的,并提供了一组更轻、更集中的功能。

© www.soinside.com 2019 - 2024. All rights reserved.