我试图在通用地图上使用Apache Commons Bean Util,如下所示:
这是地图:
public class MyObject {
public Map<String, ?> attributes = new HashMap<String, Object>();
}
这是地图中的内容的json表示:
"attributes": {
"attr1": "value1",
"attr2": "value2",
"attrN": "valueN",
"nestedObject" :{
"nestedAttr" : "value1",
"nestedAttr2" : "value2"
},
"simpleArray":["value1", "value1"]
}
以下是我尝试使用setProperty修改其中一个值的方法:
org.apache.commons.beanutils.BeanUtils.setProperty(myObject, "attributes.simpleArray[0]", "newValue");
嵌套属性工作正常。但是,当其中一个嵌套属性是数组时,我得到以下异常:
java.lang.IllegalArgumentException:Map类型的对象不支持索引或映射属性:simpleArray [0]
如果我尝试设置一个简单的属性,这是有效的:
org.apache.commons.beanutils.BeanUtils.setProperty(myObject, "attributes.attr1", "newValue");
但不是数组。这是什么问题?
答案 0 :(得分:0)
如错误所示,您可以将新数组设置为数组字段,但不能设置数组的特定索引。 Bean utils适用于字段getter / setter,因此它可以获取/设置对象的字段,但不能获取数组或列表或映射的特定索引。