Java 如果在C语言中使用camelCasing而不是PascalCasing来表示方法和成员变量,情况会有多糟#
我们使用Java进行后端编程,使用C#进行应用程序编程 我们经常使用诸如NewtonJson(C#)和Gson(Java)之类的json序列化框架与服务器交换信息 在Java世界中,节目指南使用的是在这种情况下,用户名应该是Java 如果在C语言中使用camelCasing而不是PascalCasing来表示方法和成员变量,情况会有多糟#,java,c#,json,Java,C#,Json,我们使用Java进行后端编程,使用C#进行应用程序编程 我们经常使用诸如NewtonJson(C#)和Gson(Java)之类的json序列化框架与服务器交换信息 在Java世界中,节目指南使用的是在这种情况下,用户名应该是userName,但这取决于他们在C#中何时应该是userName 因此,当在应用程序端或服务器端使用json反序列化和序列化时,会出现问题 因此,我们正在考虑将应用程序端程序惯例更改为camelCase 还是有其他方法可以解决这个问题?或者您的团队如何处理此问题?这里有多个
userName
,但这取决于他们在C#中何时应该是userName
因此,当在应用程序端或服务器端使用json反序列化和序列化时,会出现问题
因此,我们正在考虑将应用程序端程序惯例更改为camelCase
还是有其他方法可以解决这个问题?或者您的团队如何处理此问题?这里有多个选项: “别名” 任何合适的框架都应该允许您使用注释在JSON表示和实际字段名中使用不同的名称 以gson为例:
public class Example {
@SerializedName("lisp-style-name")
private String someField....
换句话说:确保所有JSON“字段名”都遵循这样的约定——这样您就独立于底层编程语言
当然,最大的缺点是必须对每个字段进行注释,甚至可能在两侧都进行注释。另一方面,上面的内容非常明确——您只需查看“数据”类声明,就可以理解应该发生什么
自定义命名支持
gson和NewtonJson库都支持策略。因此,您可以指示框架转换字段名,而不是手动进行映射
请参阅,了解如何使用gson实现这一点;对于C#,您得到了一个重复的问题。根据我的经验,您可以使用带有dotnet命名约定(属性的PascalCase)的C#代码,但要公开Web API,您可以配置json序列化程序以返回camelCase中的所有属性名称;是否糟糕取决于建筑师的观点,因此,贵公司是否有设计指南?@GhostCat谢谢,我的英语很差,很高兴知道我可以清楚地描述问题:D其他建议很蹩脚,这很难看,Newtonsoft让你可以设置一个策略来屏蔽,而不是手动尝试和指定,在手机上编写好的答案并不容易;我已经进一步强化了我的答案,希望它现在足够好,至少可以撤销否决票(不确定是你还是@JerryGoyal)