有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用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; 

    //...
}

谢谢


共 (2) 个答案

  1. # 1 楼答案

    问:Java必须使用这种符号,这是在什么地方表达出来的吗

    答:不,这是100%的“惯例”,不是强制性的

    碰巧,JSON(Javascript的产物)和Java的标准约定都是camelcase。例如:Java Naming Conventions

    some_son_field_1snake case的一个例子。它与经典的“C”程序有关。XML也很常见(但不是通用的)。它也是一种“惯例”——而不是一种要求

    我很好奇为什么要为JSON数据选择XML绑定。你考虑过使用Jackson

    最后,您可能会对本文感兴趣:

    5 Basic REST API Design Guidelines

  2. # 2 楼答案

    或者你可以使用Unified jdocs,我创建了一个库来读写JSON文档,而不使用任何POJO对象。我们知道,在复杂文档和JSON文档更改的情况下,很难管理POJO对象,与其定义POJO对象,不如干脆不使用它们。直接读取和写入JSON文档中的路径。例如,在代码段中,您可以按如下方式读取和写入字段:

    Document d = new JDocument(s); // where s is a JSON string
    String s1 = d.getString("$.some_field.some_son_field_1");
    String s2 = d.getString("$.some_field.some_son_field_2");
    

    您可以使用类似的方式写入这些路径,如下所示:

    d.setString("$.some_field.some_son_field_1", "val1");
    d.setString("$.some_field.some_son_field_2", "val2");
    

    这个库提供了许多其他功能,可以用来操作JSON文档。将文档结构锁定到模板的模型文档、字段级验证、比较、合并文档等功能

    显然,只有在不使用POJO对象的情况下,才会考虑这一点。或者,您可以使用它使用自己的方法读写POJO对象

    https://github.com/americanexpress/unify-jdocs上查看