我很努力地將一些現有的代碼段與通過JSON負載接受輸入的服務器集成在一起。我交給了一個JSON對象,並且我需要構造一個表示鍵值對的Map,其中值採用合理的預期類型。 org.json解析器似乎適用於除JSONArray之外的所有情況。將JSONArray轉換爲適當類型的Java數組
我可以看到,從JSONArray構建一個String []是很容易的...只要您知道String []是您需要的。然而,我也交給數組的雙打,整數,沒有什麼可以區分它們。我需要弄清楚類型,並創建一個適當類型的數組。
我試圖從陣列中拔出的第一個元素,並獲取其類型,在創造類型的數組實例,像這樣的希望:
private Object[] decodeToArray(JSONArray list) throws JSONException {
if (list.length() > 0) {
Class<? extends Object> type = list.get(0).getClass();
type[] result = Array.newInstance(type, list.length());
}
不過,當然,這並不編譯 - type
是一個實例,不是一個類;它不會接受?
作爲一種類型;如果我嘗試給它一個名字,那麼它需要在方法簽名中聲明T
,它似乎沒有以任何方式連接到從列表元素獲得的未知類型。
而這對於int[]
和double[]
的情況當然根本不做任何事情。整數[]和雙[]可能是可以接受的折中。
作爲臨時解決方案,我已經能夠將JSONArray呈現爲Object [],然後更改與這些數組交互的服務器端代碼以根據需要投射它們,但它很醜陋,而且它允許一些JSON-yuck滲入我們的代碼庫。
是否有任何庫或巧妙的技巧用於在Java中創建未知類型的數組?有一個JSON約定,我可以要求使用它會告訴我什麼類型是預期的?
這是家庭作業或生產? – durron597 2013-05-02 18:25:11
生產。屬於科學類。 – AbGator 2013-05-02 18:28:09
是的,我想,我不知道你是否有一個編寫Json解釋器的項目,或者你是否需要這個功能。查看我的回答 – durron597 2013-05-02 18:28:57