json.net将datatable转为json后如何替换其中的某个字段

ddjiang1225 2015-04-22 11:46:45
我将一个datatable转为json:[{state:1},{state:2}],现有一个枚举
public enum OrderState
{
[Description("生成订单")]
State1 = 1,
[Description("确认订单")]
State2 = 2,
[Description("完成订单")]
State3 = 3,
[Description("取消订单")]
State4 = 4,
[Description("作废订单")]
State5 = 5,
}
请问如何通过枚举来将json变成[{state:"生成订单"},{state:"确认订单"}]
...全文
277 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
datatable怎么可能知道枚举呢…… 你要么将datatable改成实体,要么在序列化之后改用正则替换 还有一种方法,就是在返回json的同时,返回枚举对应的说明集合
宝_爸 2015-04-23
  • 打赏
  • 举报
回复
没找到用attribute的方法,倒是找到了sp1234的方法的solution:

public enum OrderState
    {
        [Description("生成订单")]
        生成订单 = 1,
        [Description("确认订单")]
        确认订单 = 2,
        [Description("完成订单")]
        完成订单 = 3,
        [Description("取消订单")]
        取消订单 = 4,
        [Description("作废订单")]
        作废订单 = 5,
    }

    public class TestClass
    {
        public string name { get; set; }
        [JsonConverter(typeof(StringEnumConverter))]
        public OrderState state { get; set; }
    }
       TestClass testClass = new TestClass() { name = "simon", state = OrderState.生成订单 };
            string result = JsonConvert.SerializeObject(testClass);
ddjiang1225 2015-04-23
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
你定义枚举时就应该使用中文,这样json反序列化之后当你调试时自然按照枚举中的中文定义显示。 至于说要改为字符串,那就跟枚举无关了。枚举本来就是 int 数值。
你误会我的意思了,我不是要将[{state:1},{state:2}]反序列号,完整的json是这个样子的json:[{name:111,state:1},{name:222,state:2}],我只是想将json中的state:1变成中文,其他值不变,就是要变成[{name:111,state:"生成订单"},{name:222,state:"确认订单"}]
  • 打赏
  • 举报
回复
你定义枚举时就应该使用中文,这样json反序列化之后当你调试时自然按照枚举中的中文定义显示。 至于说要改为字符串,那就跟枚举无关了。枚举本来就是 int 数值。

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧