我一直在尝试将String数组从Firebase转换为实际数组,但它是Firebase中的单个字符串。
为了澄清这一点,这就是我在Firebase上拥有的东西:
我正在尝试检索这些日期并将它们转换为数组,因为它们变成了单个字符串,这使得很难将其分成不同的日期。
我已尝试按照指示here替换字符串的引号,希望仅获取方括号并使用该数组,因为我将拥有一个array [],因此我成功地做到了但是将数组转换为列表会显示双方括号,如下所示。
06-22 13:35:18.241 10352-10352 / com.angelserve.zacktinga.angelserv I / System.out:LIST ARRAY:[[Sat Jun 30 00:00:00 GMT + 02:00 2018,Sat Jun 30 00:00:00 GMT + 02:00 2018,星期日七月01 00:00:00 GMT + 02:00 2018,星期一七月02 00:00:00 GMT + 02:00 2018,星期二七月03 00:00: 2018年GMT + 02:00 2018年7月4日星期三00:00:00 GMT + 02:00 2018年7月5日星期四00:00:00 GMT + 02:00 2018年7月6日星期五00:00:00 GMT + 02: 00 2018,Sat Jul 07 00:00:00 GMT + 02:00 2018]]
我正在从Firebase获取数据快照的日期,如下所示:
mCurrentUserRefDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("DATE LIST: " + dataSnapshot.child("requested_dates").getValue());
dates.replace("\"", "");
List<String> list = Arrays.asList(dates);
System.out.println("LIST ARRAY: " + list);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我需要作为解决方案的一种方法来转换
的firebase数据快照requested_dates
并将其转换为工作数组。
答案 0 :(得分:2)
要解决此问题,建议您使用以下步骤。首先,您需要像这样获取requested_dates
属性的值:
String string = dataSnapshot.child("requested_dates").getValue(String.class);
假设您在字符串的开头有一个[
,在字符串的结尾有一个]
,让我们用一个空的字符串替换两个符号。然后,我们需要使用逗号和空格,
对其进行拆分。结果将是一个字符串数组。
String[] parts = string.replace("[", "").replace("]", "").split(", ");
for (int i = 0; i < parts.length; i++) {
Log.d("TAG", parts[i]);
}
控制台中的输出将是:
Wed Jun 13 00:00:00 GMT+02:00 2018
//and so on