我正在使用HttpClient
从API检索数据。不幸的是,我无法控制属性名称,它们都是用点表示法写的,例如
"staff":[{"responsible.user":"Y","staff.type":
{"staff.type.mnemonic":"C","staff.type.name":"Consultant"}]
这样的JSON回调中可能至少有100个左右的属性。我需要返回一个删除点的JSON对象(即将responsible.user
更改为responsibleuser
)有没有办法映射C#类并返回我想要的格式?
我使用 [DataContract]
属性和 [Datamember(Name=)]
字段映射值的C#类来映射值,但是当我查看返回的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);
基本上,我只是在尝试转换属性名称,以便我可以在前端角侧使用打字稿
您可以通过将数据转换为自己的poco(普通的ol'C#对象)来控制前端接收到的属性名称,然后再将其转换为JSON。
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