我可以在Java中为变量'public'命名JSON序列化/反序列化吗?

app*_*pel 0 java naming-conventions gson

所以我正在使用一个公共API,它向我发送一个带有名为'public'的布尔字段的JSON对象.

{  
    ...
    "public" : true,
    ...
}
Run Code Online (Sandbox Code Playgroud)

我正在使用GSON将其解析为Java类,但这迫使我声明以下变量,当然Java lexer/parser不同意:

private boolean public;
Run Code Online (Sandbox Code Playgroud)

有没有办法让我的变量被命名public

Sot*_*lis 10

使用Gson的@SerializedName注释.

@SerializedName("public")
private boolean someOtherName;
Run Code Online (Sandbox Code Playgroud)

您不能public在Java源代码中使用单词(或任何其他保留关键字)作为标识符名称.

大多数功能丰富的JSON解析器都有这样的注释或其他机制来命名JSON密钥,这些密钥没有那么多的命名限制.