如何解析来自 firebase JSON push 方法的数据
How can I parse data from firebase JSON push method
我在解析来自 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() method.Is 时生成的,有一种方法可以获取所有节点并访问信息。我正在使用 java 并在 google 应用引擎上开发一个项目。
Firebase 不能使用带有数字键的传统数组,否则我们会产生冲突并覆盖 take。以这个简单的例子为例:
// ref = ['foo'];
ref.push('bar');
同时,另一个客户端调用:
ref.push('baz');
会发生什么?如果我们使用带有数字键的传统 JavaScript 数组,两个客户端都会尝试写入 ref。
最后到达服务器的人将覆盖最先到达的数据。我们当然不希望这样。
Firebase 中的有序数据集合不是使用数组,而是由具有自动生成键的对象表示,类似于 '-KGWZ2x71KlTRF5JxLnh'。
这些密钥是自动生成的,并对时间戳和唯一的客户端 ID 进行编码。这样多个client可以同时写数据发生冲突,你的数据仍然会按顺序返回。
要处理这些类型的键,您需要参考此 link:
https://www.airpair.com/firebase/posts/firebase-building-realtime-app
这是另一个堆栈link,它会给你一些参考:
Get users by name property using Firebase
希望这能让您对此有所了解。
我在解析来自 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() method.Is 时生成的,有一种方法可以获取所有节点并访问信息。我正在使用 java 并在 google 应用引擎上开发一个项目。
Firebase 不能使用带有数字键的传统数组,否则我们会产生冲突并覆盖 take。以这个简单的例子为例:
// ref = ['foo'];
ref.push('bar');
同时,另一个客户端调用:
ref.push('baz');
会发生什么?如果我们使用带有数字键的传统 JavaScript 数组,两个客户端都会尝试写入 ref。
最后到达服务器的人将覆盖最先到达的数据。我们当然不希望这样。
Firebase 中的有序数据集合不是使用数组,而是由具有自动生成键的对象表示,类似于 '-KGWZ2x71KlTRF5JxLnh'。
这些密钥是自动生成的,并对时间戳和唯一的客户端 ID 进行编码。这样多个client可以同时写数据发生冲突,你的数据仍然会按顺序返回。
要处理这些类型的键,您需要参考此 link: https://www.airpair.com/firebase/posts/firebase-building-realtime-app
这是另一个堆栈link,它会给你一些参考: Get users by name property using Firebase
希望这能让您对此有所了解。