前后端沟通 naming conversion 转换需要知道的事

时间:2021-06-12
本文章向大家介绍前后端沟通 naming conversion 转换需要知道的事 ,主要包括前后端沟通 naming conversion 转换需要知道的事 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

c# 是 pascal case, js 是 camel case 所以在做 web api 和 odata 的时候经常需要转换. 

早年 web api 是依赖 Newtonsoft json (JSON.NET) 的, 所以我们常看见 

[JsonProperty(propertyName: "name_cn")]
public string Name { get; set; } = "";

或者 

[DataMember(Name = "name_cn")]
public string Name { get; set; } = "";

2 个都可以用, data member 是微软自己的, 好像是 wcf 带下来的. JsonProperty 是 newton 的. 

而 newton 也会去读 data member 所以就通用了. 

后来微软不依赖 newton 了, 改成了 System.Text.Json

就用了后来的 

[JsonPropertyName("name_cn")]
public string Name { get; set; } = "";

所以现在的话,应该是用 JsonPropertyName 就对了

那么 odata 从来就不是用 newton 的, 所以不支持 JsonProperty

现在呢, 它视乎也没有要支持 System.Text.Json, 所以也是不可以用 JsonPropertyName 

有个 feature request : https://github.com/OData/WebApi/issues/2174

那么, odata 可以 2 种做法. 

1 就是用 DataMember, 这个是微软的嘛, 而已 odata 和 wcf 靠很近. 

2.就是在 builder 的时候直接改. 

https://stackoverflow.com/questions/42016069/how-to-query-odata-while-using-alternate-property-names

https://docs.microsoft.com/en-us/odata/webapi/convention-model-builder

原文地址:https://www.cnblogs.com/keatkeat/p/14878768.html