2016-07-29 129 views
2

我有需要转换为Java对象的JSON。我需要处理JSONs可以是这样的:在输入的搜索引擎的搜索关键词时,返回使用保留关键字作为变量名创建Java对象

{ 
    "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只是从类似的早期应用程序“给予”我。所以我显然在变量的保存和抽象方面遇到了问题。摘要是一个保留关键字,无论我在哪里读取保留关键字,都不能用作变量名称。

我无法访问以前的应用程序,我有点更新,我想这一点是我需要自己弄清楚;)但是我现在仍然有点立场,有不知道如何前进。

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

+0

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

回答

8

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

@SerializedName("abstract") 
private String abstractText; 
6

你已经有了另一种选择是使用杰克逊,并使用@JsonProperty注解..

@JsonProperty("abstract") 
private String abstractText; 
+0

谢谢!我不知道我可以使用这个,这对我很有用! – Alex

+1

尽管我喜欢批​​准,请您接受克里斯托夫给出的第一个答案吗?他提出了这个概念。我刚刚补充了这个建议。 – christopher

+1

谢谢@christopher。你不应该有! –

1

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

如果您使用mors基本库(例如JSON.org's),则无需这样做,因为您可以将其解析为特定对象,以便处理它。

JSONObject obj = new JSONObject(" .... "); 

JSONArray arr = obj.getJSONArray("documents"); 
String abstractValue = arr.getJSONObject(0).getString("abstract"); 
相关问题