0

在我正在构建的应用程序中,我正在检索字段标题“私有”的值,我需要将其返回以在应用程序中使用。正如您可能看到的那样,该字段的标题在 JAVA 内部给我带来了问题,因为该字段被混淆了。

解决此问题的最佳方法是什么?如果您需要我澄清任何事情,请告诉我。

JSON

"private": true,

爪哇

private String private;

public String getPrivate() {
    return private;
}

更新

我无权编辑返回 JSON 的页面。更改 JSON 中的值是显而易见的选择,但我想知道是否有办法通过 JAVA 以某种方式解决这个问题。


笔记

谢谢大家的建议!我很感激。

4

4 回答 4

6

private 是 java 中的关键字,您不能将它们用于变量名,因为它们是保留的。您需要将变量重命名为其他名称。正如javadoc所说:

您不能在程序中使用任何关键字作为标识符。

以下是完整关键字列表的 javadoc 参考:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

于 2013-06-11T14:27:30.487 回答
2

正如其他人所指出的,问题是由privateJava 中的关键字引起的。

你有三个选择:

  • 更改您的 JSON,以便您不使用private(或任何其他 Java 关键字)作为 JSON 属性名称。

  • 调整您正在使用的 JSON 绑定,以便将有问题的属性名称映射到合法的 Java 标识符。

    例如,如果您使用 JSON Jackson 数据绑定,那么执行此操作的简单方法是为具有不同名称(例如 )的字段编写带有 getter/setter 的 Java 类,proivit然后向该方法添加@JsonProperty("private")注释getProivit

  • 如果您手动编写 Java 类,则可以为私有变量使用任何(合法)名称。所以只需编写如下代码:

        private String proivit;
    
        public String getPrivate() {
            return proivit;
        }
    
于 2013-06-11T14:41:34.340 回答
0

您可以做的是将变量名称更改为 isPrivate

于 2013-06-11T14:29:30.703 回答
0

你没有说你用什么在 JSON 和 Java 之间进行转换,但它似乎是基于 JavaBeans 命名约定的。如果这是真的,那么您的变量需要与用于访问它的方法的名称无关:

private String fubar;

public String getPrivate() {
    return this.fubar;
}

public void setPrivate(String value) {
    this.fubar = value;
}

如果您使用 IDE 生成 getter 和 setter,则必须手动编辑方法名称。您可能还需要编辑参数名称以保持一致性。

如果您使用的是忽略 getter/setter 并直接访问变量的框架,那么您没有太多选择。AString.replace()会起作用,但它也会像这样损坏 JSON

{ `"foo": "this is private: do not publish"` }
于 2013-06-11T14:41:02.947 回答