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

C#函数返回JSON问题:类型转换错误及找不到Json方法

问题解决方法

错误原因

你的方法返回类型是Task<IActionResult>,但实际返回的是手动序列化后的string类型,类型不匹配导致报错。而且手动序列化完全没必要,ASP.NET Core框架已经提供了现成的方法处理JSON返回逻辑。

修正步骤

  1. 添加必要命名空间:Json()方法属于Microsoft.AspNetCore.Mvc命名空间,在代码文件顶部添加:
    using Microsoft.AspNetCore.Mvc;
    
  2. 移除手动序列化代码:直接返回查询到的对象,框架会自动完成JSON序列化操作。

修正后的完整代码:

using Microsoft.AspNetCore.Mvc;

public async Task<IActionResult> GetCurrencyAsync()
{
    var currencies = await _ripple_primary_context.RipplCurrencies
        .Select(p => new { p.CurrencyId, p.CurrencyName })
        .ToListAsync();

    return Json(currencies);
}

额外优化(API控制器场景)

如果你的控制器是API控制器(标记了[ApiController]),推荐使用Ok()方法返回,这会自动生成符合REST规范的200状态码JSON响应:

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/currency")]
public class CurrencyController : ControllerBase
{
    private readonly YourDbContext _ripple_primary_context;

    public CurrencyController(YourDbContext ripplePrimaryContext)
    {
        _ripple_primary_context = ripplePrimaryContext;
    }

    [HttpGet]
    public async Task<IActionResult> GetCurrencyAsync()
    {
        var currencies = await _ripple_primary_context.RipplCurrencies
            .Select(p => new { p.CurrencyId, p.CurrencyName })
            .ToListAsync();

        return Ok(currencies);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:37:09