2017-04-06 95 views
1

我在jar上用jar來試試這個。net.sf.json-lib 2.4。如何解析jsonarray方括號內容

Map<String,Object>[] retrievedList = null; 
String getTypeParam = "[{ 'foo': '[1234] server' }, { 'foo': '[1234]' }]"; 
JSONArray jsonArray = JSONArray.fromObject(getTypeParam); 

list = (Map<String, Object>[]) JSONArray.toArray(jsonArray, HashMap.class); 

for (int inx = 0; inx < list.length; inx++) { 
    System.out.println(list[inx].get("foo").getClass()); 
    testDAO.insertTestData(list[inx]); 
} 

當插入第二個數據時,會出現以下錯誤。

class java.lang.String 
class java.util.ArrayList 
com.ibatis.common.jdbc.exception.NestedSQLException: 
--- The error occurred in egovframework/sqlmap/com/test/sqlmap-test.xml. 
--- The error occurred while applying a parameter map. 
--- Check the insertTestData-InlineParameterMap. 
--- Check the parameter mapping for the 'foo' property. 
--- Cause: java.lang.NullPointerException 

我打印列表後,我可以看到,這個例外是在方括號中分析錯誤引起的。

0: [{\"foo\" : \"[1234] server\"}] 
1: [{\"foo\" : [1234]}] 

如何將「1」作爲帶有方括號的字符串,如「0」?

請幫忙!

+3

你是什麼意思「但結果......它是一個數組,而不是一個字符串。」?我希望結果是一個包含單個對象的數組,其中包含一個名爲「foo」的屬性,該屬性具有字符串值。請提供一個顯示實際發生情況的[mcve]。 –

+0

您是否確實提取了'foo'的值,或者您是直接使用'fromObject'調用的結果並期望Java自動爲您挖掘到該值? – user2357112

+0

「JSONArray」類在哪裏? – nandsito

回答

0

如果foo是返回一個數組,你可以嘗試像foo[0].tostring

這說明您的數組中的從零開始的索引(第一個元素),這應該是你所期待的變量。您還必須將其轉換爲字符串,因爲這是一個整數。