【问题标题】:Creating Java Object with reserved keywords as variable name使用保留关键字作为变量名创建 Java 对象
【发布时间】:2016-12-03 20:41:26
【问题描述】:

我有需要转换为 Java 对象的 JSON。我需要处理的 JSON 可能如下所示:

{
    "documents": [
        {
        "title": "Jobs",
        "is-saved": false,
        "abstract": "<span class=\"hit\">Jobs</span> may refer to:\n\n* Steve <span class=\"hit\">Jobs</span> (1955–2011), co-founder and former CEO of consumer electronics company...<br />",
        "id": "Jobs",
        "url": "http://en.wikipedia.org/wiki/Jobs"
        }
    ],

   "keywords_local": [
       {
        "keyword": "Jobs",
        "interest": 1,
        "angle": 0
       }
   ],
   "sessionid": "6cd6402e-1f67-45a8-b0fa-e79a5d0d50f4",
   "q": "Jobs",
}

在搜索引擎上输入搜索关键字时会返回此 JSON,在本例中为“工作”。我没有将这些变量命名为要创建的变量,这个 JSON 只是从一个类似的早期应用程序“给”给我的。所以我显然在变量被保存和抽象方面遇到了麻烦。摘要是一个保留关键字,在我读到保留关键字的任何地方都不能用作变量名。

我无法访问我正在更新的上一个应用程序,我想这意味着我需要自己解决;)但我现在有点停滞不前,没有对如何前进的想法。

我是新手,所以如果我问的是一个愚蠢的问题,请不要见怪,这是我第一次编写任何类型的应用程序! ;) 感谢您的帮助!

【问题讨论】:

  • 你是如何尝试序列化读取数据的对象的?

标签: java json


【解决方案1】:

如果您使用 GSON 进行解析,您可以根据需要为您的成员命名并为它们添加注释以进行映射。

@SerializedName("abstract")
private String abstractText;

【讨论】:

    【解决方案2】:

    您的另一个选择是使用 Jackson,并使用 @JsonProperty 注释..

    @JsonProperty("abstract")
    private String abstractText;
    

    【讨论】:

    • 谢谢!我不知道我可以使用它,这对我很有用!
    • 尽管我很高兴,但您能接受克里斯托夫给出的第一个答案吗?他提出了这个概念。我只是补充了建议。
    • 谢谢@christopher。你不应该有!
    【解决方案3】:

    实际上,这取决于您使用的工具。使用直接映射到自定义 POJO 的工具(如 GSONJackson),您需要将 JSON 字段名称映射到 Java 正确且有效的字段名称。

    如果您使用诸如 JSON.org 之类的 mors 基本库,则无需这样做,因为您将其解析为允许您处理的特定对象。

    JSONObject obj = new JSONObject(" .... ");
    
    JSONArray arr = obj.getJSONArray("documents");
    String abstractValue = arr.getJSONObject(0).getString("abstract");
    

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2017-12-05
      • 1970-01-01
      • 2020-06-15
      相关资源
      最近更新 更多