我在带有net net.sf.json-lib 2.4的java上尝试这个。
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”?
请帮忙!
答案 0 :(得分:0)
如果foo
正在返回一个数组,您可以尝试类似foo[0].tostring
这将显示数组中的零索引(第一个元素),它应该是您要查找的变量。您还必须将其转换为字符串,因为这是一个整数。