我的 android 应用程序连接到 Firebase 并提取由我的服务器发送到那里的“警报对象”。
当我从 Firebase 导出数据时,我得到了数据的格式精美的 JSON 表示。
问题: 当我使用 DataSnapshot 将数据提取到我的 android 设备时,数据具有“=”(等号)而不是“:”(分号)。引文也没有。
当我尝试执行类似 JSONObject alert = new JSONObject(data.getValue().toString());
之类的操作时,由于显而易见的原因,我收到了错误。我说很明显是因为如果您查看我的代码打印到控制台的内容,您会发现它不再是有效的 JSON 格式。
一位 friend 提到我需要做一些编码方面的事情,但我们没有时间讨论它。
我如何遍历我创建的这些(有点奇怪)警报对象并将它们转换为我的 Java 中的 JSON 对象,以便我可以访问它们的属性,如 alert.date
和 警报消息
。
我认为屏幕截图可以帮助您了解我在做什么。 Firebase 根本不安全,因此您可以随意查看它。它不会真正起到多大作用,当我投入生产时,无论如何我都会移动它。
我确信这是一个非常容易回答的问题,我只是不太精通 JSON 和整个编码。
谢谢!
最佳答案
你可以使用 gson 库
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
/*JSONObject jsonObject = null;
try {
jsonObject=new JSONObject();
} catch (JSONException e) {
e.printStackTrace();
}*/
Gson gson = new Gson();
String s1 = gson.toJson(dataSnapshot.getValue());
JSONArray object = null;
try {
object = new JSONArray(s1);
} catch (JSONException e) {
e.printStackTrace();
}
JSONArray jsonArray = object;
Log.e("string", s1);
}
关于java - Android Firebase - 无法从 Firebase 快照接收正确的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37091468/