java - Android Firebase - 无法从 Firebase 快照接收正确的 JSON

标签 java android json encoding firebase

我的 android 应用程序连接到 Firebase 并提取由我的服务器发送到那里的“警报对象”。

当我从 Firebase 导出数据时,我得到了数据的格式精美的 JSON 表示。

问题: 当我使用 DataSnapshot 将数据提取到我的 android 设备时,数据具有“=”(等号)而不是“:”(分号)。引文也没有。

当我尝试执行类似 JSONObject alert = new JSONObject(data.getValue().toString()); 之类的操作时,由于显而易见的原因,我收到了错误。我说很明显是因为如果您查看我的代码打印到控制台的内容,您会发现它不再是有效的 JSON 格式。

一位 friend 提到我需要做一些编码方面的事情,但我们没有时间讨论它。

我如何遍历我创建的这些(有点奇怪)警报对象并将它们转换为我的 Java 中的 JSON 对象,以便我可以访问它们的属性,如 alert.date警报消息

我认为屏幕截图可以帮助您了解我在做什么。 Firebase 根本不安全,因此您可以随意查看它。它不会真正起到多大作用,当我投入生产时,无论如何我都会移动它。

Firebase screenshot

JSON export straight from Firebase website

Code in Android Studio to print each object to console

Output to console when running app

我确信这是一个非常容易回答的问题,我只是不太精通 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/

相关文章:

java - Play框架+Spring : Injecting URL from application.conf

java - 两种类型的 try catch block 之间的区别

java - 如何使用 runOnUiThread() 或 onPostExecute() 在线程内更新 UI

java - 如何将一批.jpeg文件转换为.gif动画?

java - 使用正确的Locale和24h从API级别15从Millis获取字符串日期

javascript - 从 javascript 正确添加到 json

java - JavaFX 中的一个 ListView 中的 2 个不同列表除以 header

java - 在 Java 9 的接口(interface)中使用抽象类有什么好的理由吗?

python - 将 JSON 转换为 R 数据框

mysql - 无法将字符串转换为整数 - 从散列中的散列中提取值