猿问

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

我正在使用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 端使用打字稿模型


函数式编程
浏览 115回答 1
1回答

一只名叫tom的猫

您可以通过在将数据转换为 JSON 之前将数据转换为您自己的 POCO(Plain Ol' C# Object)来控制前端接收到的属性名称。TaskAPI task = new TaskAPI();List<myPOCO> list = new List<myPOCO>();foreach (var item in res)&nbsp; list.Add(new myPOCO(item)); //all your mapping is in the POCO Constructortask = JsonConvert.DeserializeObject(list); //or whatever syntax it would be
随时随地看视频慕课网APP
我要回答