我使用Jersey/Java創建了一個REST服務器,我發現了一個奇怪的行爲。Jersey:具有1個元素的Json數組被序列化爲對象
我有一個返回對象的數組爲JSON
@GET
@Path("/files")
@Produces(MediaType.APPLICATION_JSON)
public Object getFiles() throws Exception{
DatabaseManager db = new DatabaseManager();
FileInfo[] result = db.getFiles();
return result;
}
的代碼被正確地執行,並且數據被返回給客戶端(一個jQuery AJAX調用)在服務器上的方法。 問題是,如果「結果」數組有一個元素或多個元素,則返回數據的格式會發生變化。
一個元素響應:
{"fileInfo":[{"fileName":"weather.arff","id":"10"},{"fileName":"supermarket.arff","id":"11"}]}
正如你所看到的,在第一種情況中返回的對象「的fileInfo」屬性的值是:
{"fileInfo":{"fileName":"weather.arff","id":"10"}}
有兩個元素響應一個對象,在第二種情況下,該值是一個數組。 我在做什麼錯?不應該第一個案例返回這樣的事情:
{"fileInfo":[{"fileName":"weather.arff","id":"10"}]}
即一個數組與單個對象裏面?
我知道我可以在客戶端檢測到這一點,但它看起來像一個非常醜陋的黑客。
謝謝你的時間。
JSONArray類的定義在哪裏?我必須從json.org添加json庫嗎? – willvv