BeanUtils - 通用地图数组的 setProperty
BeanUtils - setProperty on generic array of maps
我正在尝试在通用地图上使用 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");
但不是数组。这里有什么问题?
如错误所述,您可以为数组字段设置一个新数组,但不能设置数组的特定索引。 Bean utils 在字段 getter/setters 上工作,因此它可以 get/set 一个对象的字段但不是数组或列表或映射的特定索引。
我正在尝试在通用地图上使用 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");
但不是数组。这里有什么问题?
如错误所述,您可以为数组字段设置一个新数组,但不能设置数组的特定索引。 Bean utils 在字段 getter/setters 上工作,因此它可以 get/set 一个对象的字段但不是数组或列表或映射的特定索引。