react native中无法将readablearray放入map的解决方法
在react native中,使用readablearray向android传递参数时,如果直接将其放入writablemap中会产生“NULL illegal type provided”错误。这是因为writablemap仅支持存放特定类型的对象,而readablearray不在其中。
要解决此问题,可以将readablearray转换为writablearray,然后将其放入writablemap中。以下是一些可用的转换方法:
通用的转换方法:
private static writablemap convertmap(readablemap map) { writablemap temp = arguments.createmap(); temp.merge(map); return temp; } private static writablearray convertarray(readablearray array) { writablearray temp = arguments.createarray(); for (int i = 0; i < array.size(); i++) { readabletype type = array.gettype(i); switch (type) { case null: temp.pushnull(); break; case boolean: temp.pushboolean(array.getboolean(i)); break; case number: temp.pushdouble(array.getdouble(i)); break; case string: temp.pushstring(array.getstring(i)); break; case array: temp.pusharray(convertarray(array.getarray(i))); break; case map: temp.pushmap(convertmap(array.getmap(i))); break; default: throw new exception("illegal type provided"); } } return temp; }
写入步骤:
将readablearray转换为writablearray后,可以使用以下方法将其放入writablemap中:
map.putArray("key", convertArray(params));
通过这些步骤,即可将readablearray安全地放入writablemap中,从而解决错误。