Android Java7环境下用分隔符在Firebase存储数组数据的问题
解决Firebase数组存储格式问题(Android Java 7环境)
你现在遇到的问题是,原本想在Firebase里存储多元素的数组,结果因为错误拼接字符串,变成了单元素数组。根源在于你把所有元素拼成了一个字符串,而Firebase其实支持直接存储Java的集合或数组,不需要手动拼接成JSON格式的字符串。
最优解决方案:直接传入集合/数组给Firebase
如果你用的是Firebase Realtime Database,直接把你的movies列表(假设是List<String>)或者转换成String[]数组,调用setValue()方法即可,Firebase会自动帮你转换成正确的数组格式:
// 假设你有一个DatabaseReference对象ref List<String> movies = ...; // 你的原始列表 ref.setValue(movies);
或者用数组形式:
String[] moviesArray = movies.toArray(new String[movies.size()]); ref.setValue(moviesArray);
这样Firebase里就会自动生成["marie", "femmehacks"]这种正确的数组结构,完全不需要手动拼接字符串。
如果一定要手动构造JSON数组字符串(不推荐)
如果因为某些特殊原因必须手动构造符合JSON格式的数组字符串,那你需要给每个元素加上引号,再用逗号分隔,最后包裹方括号。修改你的代码如下:
StringBuilder newstring = new StringBuilder("["); for (int i = 0; i < movies.size(); i++) { String movie = movies.get(i); newstring.append("\"").append(movie).append("\""); // 非最后一个元素时添加逗号 if (i != movies.size() - 1) { newstring.append(","); } } newstring.append("]"); String all = newstring.toString();
不过再次强调,这种手动构造的方式完全没必要——Firebase原生支持Java集合类型的存储,直接传入集合/数组不仅更简洁,还能避免手动拼接带来的格式错误。
内容的提问来源于stack exchange,提问作者Panda18
相关产品推荐
相关产品推荐

