2016-07-29 123 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"); 
相關問題