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

如何将AJAX JSON响应中的枚举int值转换为对应字符串值

枚举返回整数转字符串展示方案

问题场景

当前ASP.NET MVC项目实现Todo列表功能时存在如下问题:

  • Todo模型中StatusOfCompletion为枚举类型
  • 后端HomeController的DisplayList接口直接返回List<Todo>的JSON结果
  • 前端Index视图通过AJAX拉取数据拼接表格,接口默认返回枚举对应的整数值,导致表格展示数字而非枚举文本

推荐方案:后端序列化时直接输出枚举字符串

这个方案不需要改动前端逻辑,一次配置后所有相关接口都能直接返回枚举字符串,维护成本最低。

零依赖快速修改(无需引入第三方库)

直接修改DisplayList接口,返回结果时将枚举字段转为字符串即可:

public JsonResult DisplayList()
{
    // 投影转换时将枚举转为字符串
    var returnData = ListOfTodos.Select(todo => new 
    {
        todo.ItemId,
        todo.Description,
        todo.StartDate,
        todo.EndDate,
        StatusOfCompletion = todo.StatusOfCompletion.ToString()
    });
    return Json(returnData, JsonRequestBehavior.AllowGet);
}

改完后接口返回的StatusOfCompletion字段直接是"YetToStart"这类文本,原有前端拼接逻辑不用做任何修改,就能正常展示枚举文本。

全局配置(适合项目中多处用到枚举序列化的场景)

如果项目里已经引入了Newtonsoft.Json(Json.NET,大部分MVC项目默认都会集成),可以直接全局配置所有JSON接口自动将枚举序列化为字符串,不用单独修改每个接口:

  1. 打开Global.asax.cs文件
  2. 在Application_Start方法中添加如下配置:
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

protected void Application_Start()
{
    // 其他原有配置保持不变
    
    // 给JSON序列化器添加枚举转字符串的转换器
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
}

配置完成后,所有接口返回的枚举字段都会默认输出字符串名称。

备选方案:前端映射转换

如果暂时不能修改后端代码,也可以在前端JS中维护一份枚举映射表,渲染时做转换:

  1. 在AJAX请求逻辑前添加枚举映射,映射关系和后端Status枚举的定义保持完全一致:
// 枚举值:枚举名称 对应关系和后端对齐
const statusTextMap = {
    0: "YetToStart",
    1: "InProgress",
    2: "Completed"
    // 后续新增枚举项在这里同步补充
};
  1. 修改表格拼接逻辑,将原来直接取data[i].StatusOfCompletion的位置替换为映射取值:
str = "<tr><td>" + (i + 1) + "</td><td>" + data[i].ItemId + "</td><td>" + data[i].Description +
    "</td><td>" + convertToJavaScriptDate(data[i].StartDate) + "</td><td>" + convertToJavaScriptDate(data[i].EndDate) +
    "</td><td>" + statusTextMap[data[i].StatusOfCompletion] + "</td><td><a href=/home/edit/" + data[i].ItemId + ">Edit</a></td></tr>";

注意:这个方案需要前后端枚举定义保持同步,后续后端修改枚举值/名称时必须同步更新前端映射表,否则会出现展示错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:51:09