我有需要转换为Java对象的JSON。我需要处理的JSON可以是这样的:
{
"documents": [
{
"title": "Jobs",
"is-saved": false,
"abstract": "<span class="hit">Jobs</span> may refer to:nn* 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,在本例中为"Jobs"。我还没有命名这些要创建的变量,这个JSON只是从一个类似的早期应用程序中"提供"给我的。所以我显然在变量的保存和抽象方面遇到了麻烦。Abstract是一个保留关键字,在我读到的任何地方,保留关键字都不能用作变量名。
我无法访问我正在更新的上一个应用程序,我想关键是我需要自己解决;)但我现在有点停滞不前,不知道如何前进。
我是个新手,所以如果我问了一个愚蠢的问题,不要给我下地狱,这是我第一次编写任何类型的应用程序!)谢谢你的帮助!
如果使用GSON进行解析,则可以根据需要命名成员,并对其进行注释以进行映射。
@SerializedName("abstract")
private String abstractText;
另一个选项是使用Jackson,并使用@JsonProperty
注释。。
@JsonProperty("abstract")
private String abstractText;
实际上,这取决于您使用的工具。使用直接映射到自定义POJO的工具(如GSON、Jackson),您需要将JSON字段名与Java正确有效的字段名进行映射。
如果您使用一个mors基本库,比如JSON.org,那么就没有必要这样做,因为您可以将其解析为特定的对象来处理它
JSONObject obj = new JSONObject(" .... ");
JSONArray arr = obj.getJSONArray("documents");
String abstractValue = arr.getJSONObject(0).getString("abstract");