为了账号安全,请及时绑定邮箱和手机立即绑定

如何将以点表示法格式化的 json 属性转换为 ac# 类

如何将以点表示法格式化的 json 属性转换为 ac# 类

C#
函数式编程 2022-06-19 09:58:48
我正在使用HttpClient从 api 检索数据。不幸的是,我无法控制属性名称,它们都是用点表示法编写的,例如"staff":[{"responsible.user":"Y","staff.type":    {"staff.type.mnemonic":"C","staff.type.name":"Consultant"}]这个 json 回调中可能至少有 100 个左右的属性是这样的。我需要返回一个删除点的 json 对象(即更改responsible.user为responsibleuser)有没有办法映射 ac# 类并返回我想要的格式?我有 ac# 类使用[DataContract]属性和[Datamember(Name=)]字段来映射值,但是当我查看返回的 json 时,它们的属性中仍然有点。这就是我开始在我的控制器中使用的东西 using(HttpClient c = new HttpClient())        {            c.DefaultRequestHeaders.Authorization =               new System.Net.Http.Headers.AuthenticationHeaderValue(                   "Bearer",                   "Cazqmx-TTHOOfnJy92SRng=="               );            var link = string.Format(AmsApiGet, "6894998", "TYEE");            var res = await c.GetStringAsync(link);            TaskAPI task = new TaskAPI();            task = JsonConvert.DeserializeObject<TaskAPI>(res);            return Ok(task);基本上,我只是想转换属性名称,以便我可以在前端 Angular 端使用打字稿模型
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您可以通过在将数据转换为 JSON 之前将数据转换为您自己的 POCO(Plain Ol' C# Object)来控制前端接收到的属性名称。


TaskAPI task = new TaskAPI();


List<myPOCO> list = new List<myPOCO>();


foreach (var item in res)

  list.Add(new myPOCO(item)); //all your mapping is in the POCO Constructor


task = JsonConvert.DeserializeObject(list); //or whatever syntax it would be


查看完整回答
反对 回复 2022-06-19
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号