如何解析来自 Firebase JSON 推送方法的数据

Posted

技术标签:

【中文标题】如何解析来自 Firebase JSON 推送方法的数据【英文标题】:How can I parse data from firebase JSON push method 【发布时间】:2016-08-27 23:36:44 【问题描述】:

我在解析来自 JSON 的数据时遇到问题,例如


-KGWZ2x71KlTRF5JxLnh: 
condition: "clear sky",
date: "29 Apr 2016",
degree: "59.90360000000002",
latitude: "33.7932608",
longitude: "-118.1359034",
placeType: "Shopping Mall",
placeVisited: "Los Altos Mall",
time: "03:28",
uid: "2fe51b4a-60b9-42cf-a889-bb607a5ea9bd",
username: "kavit kaushal"
,
-KGWZ3g5KPVaRiB6BCli: 
condition: "clear sky",
date: "29 Apr 2016",
degree: "59.90360000000002",
latitude: "33.7932608",
longitude: "-118.1359034",
placeType: "Shopping Mall",
placeVisited: "Los Altos Mall",
time: "03:28",
uid: "2fe51b4a-60b9-42cf-a889-bb607a5ea9bd",
username: "kavit kaushal"
,
-KGYQfmdGEX5lsehJ1g8: 
condition: "overcast clouds",
date: "29 Apr 2016",
degree: "65.11999999999996",
latitude: "33.7933637",
longitude: "-118.135812",
placeType: "Shopping Mall",
placeVisited: "Los Altos Mall",
time: "12:11",
uid: "2fe51b4a-60b9-42cf-a889-bb607a5ea9bd",
username: "muktika bansal"


这些节点是我使用 Firebase.push() 方法时生成的。有没有办法获取所有节点并访问信息。我正在使用 java 并在 google app engine 上开发一个项目。

【问题讨论】:

Firebase documentation 也有一些很好的入门示例。 我会,但在 JASON 解析中我需要知道对象,因为这些是随机键我不知道该怎么做? 如果您已经可以将其检索为DataSnapshot,为什么还要在 JSON 中解析它? 您正在吸引反对票,因为您没有展示您已经尝试过的内容。通常最好显示您的工作代码并指出您卡在哪里。在这种情况下,您似乎需要有关列表的帮助。 Firebase 中的此类集合映射到 Java 中的 Map<String,YourClass> @trigger 我正在使用 Google 应用引擎并使用 java 作为我的语言来处理我的数据。以上数据是从我的 android 应用程序生成的,并且正在寻找一种获取我的 firebase 数据的方法。 REST web api 看起来很简单,所以我走那条路,因为我可以直接在一个对象中访问所有数据。谢谢,我将使用 Map 表单来解析我的数据。 【参考方案1】:

Firebase 不能使用带有数字键的传统数组,否则我们会创建冲突并覆盖镜头。举个简单的例子:

// ref = ['foo'];
ref.push('bar');

同时,另一个客户端调用:

ref.push('baz');

会发生什么?如果我们使用带有数字键的传统 javascript 数组,两个客户端都会尝试写入 ref。

最后到达服务器的人将覆盖最先到达的数据。我们当然不希望这样。

Firebase 中的有序数据集合不使用数组,而是由具有自动生成键的对象表示,类似于 '-KGWZ2x71KlTRF5JxLnh'。

这些密钥是自动生成的,并对时间戳和唯一的客户端 ID 进行编码。这样多个客户端可以同时写入数据,发生冲突,你的数据仍然会按顺序返回。

要处理这些类型的键,您需要参考此链接: https://www.airpair.com/firebase/posts/firebase-building-realtime-app

这是另一个堆栈链接,它将为您提供一些参考: Get users by name property using Firebase

希望这能给你一些想法。

【讨论】:

以上是关于如何解析来自 Firebase JSON 推送方法的数据的主要内容,如果未能解决你的问题,请参考以下文章

PUSH ERROR 成功解析推送发送后收到来自 Parse 的无效 JSON 错误

来自 Firebase 推送通知的反应导航导航

如何在单个 Firebase 数据库中为多个应用构建推送令牌

如何快速解码来自 Firebase Firestore 的时间戳

从推送通知解析时出现 SwiftyJson 解析问题

Firebase 通过 curl 命令发送推送通知有效,但不是来自 firebase 控制台