需求场景: 当用android封装一个UI组件给ReactNative使用, ReactNative端传递一个数组给android组件时 , android这边在接受数据时要使用ReadableArray对应js中的数组 , 要将ReadableArray转化成android中可以识别的集合 , 然后才可以使用 .
注意 : 此案例使用的Json解析框架是FastJson
具体代码:
@ReactProp(name = "datas")
public void setViewPagerInfo(FlexibleHeightViewPager view, ReadableArray params) {
if (params != null && params.size() != 0) {
//Person是js数组元素对应的bean类
//当然,js数组元素也可能是String等,而不是Object,那种处理更简单,此处只介绍数组元素是Object的情况
ArrayList<Person> models = new ArrayList<>();
//主要思路就是,遍历ReadableArray ,将其元素转换成bean类,然后重新放入集合中
for (int i = 0; i < params.size(); i++) {
ReadableMap map = params.getMap(i);
JSONObject jsonObject = ReactNativeJson.convertMapToJson(map);
FlexibleHeightViewPagerModel picModel = JSON.parseObject(jsonObject.toString(), Person.class);
models.add(picModel);
//models就是转换之后的数据集合
}
}
}