用Java建模JSON
在我使用Java/Rest/JSon的几次工作中,JSon元素总是以camelCase格式构建的
例如:
"someField": {
"someSonField1": "20191106",
"someSonField2": "20201119",
...
}
然而,在他们传递给我的构建Rest JSon客户端的功能性文档中,他们使用了以下符号:
"some_field": {
"some_son_field_1": "20191106",
"some_son_field_2": "20201119",
...
}
Java必须使用符号1吗
在我看来,如果这样做,在建模对象时,一切都会顺利得多:
@XmlRootElement(name = "someField")
@XmlType(propOrder = {"someSonField1", "someSonField2"})
public class someField {
private String someSonField1;
private String someSonField2;
//...
}
谢谢
# 1 楼答案
问:Java必须使用这种符号,这是在什么地方表达出来的吗
答:不,这是100%的“惯例”,不是强制性的
碰巧,JSON(Javascript的产物)和Java的标准约定都是camelcase。例如:Java Naming Conventions
some_son_field_1
是snake case的一个例子。它与经典的“C”程序有关。XML也很常见(但不是通用的)。它也是一种“惯例”——而不是一种要求我很好奇为什么要为JSON数据选择XML绑定。你考虑过使用Jackson吗
最后,您可能会对本文感兴趣:
5 Basic REST API Design Guidelines
# 2 楼答案
或者你可以使用Unified jdocs,我创建了一个库来读写JSON文档,而不使用任何POJO对象。我们知道,在复杂文档和JSON文档更改的情况下,很难管理POJO对象,与其定义POJO对象,不如干脆不使用它们。直接读取和写入JSON文档中的路径。例如,在代码段中,您可以按如下方式读取和写入字段:
您可以使用类似的方式写入这些路径,如下所示:
这个库提供了许多其他功能,可以用来操作JSON文档。将文档结构锁定到模板的模型文档、字段级验证、比较、合并文档等功能
显然,只有在不使用POJO对象的情况下,才会考虑这一点。或者,您可以使用它使用自己的方法读写POJO对象在https://github.com/americanexpress/unify-jdocs上查看