我需要获取一个 Firebase 链接作为数组。我有以下链接 https://.firebaseio.com/users.json 它将检索以下 json 文件:
{
"-KOIbPUxKWKMaIOuX1cR": {
"email": "fillocj.rc@gmail.co",
"lastName": "Alberto",
"password": "password",
"userName": "Rodolfo"
},
"-KOOF5S3kDnvsT9nVx85": {
"email": "test@test2.com",
"lastName": "TEST",
"password": "password",
"userName": "TEST"
}
}
我在 javascript 中使用以下函数来进行转换:
var o = 'https://<myInstance>.firebaseio.com/users.json';
var arr = Object.keys(o).map(function (k) { return o[k] });
console.log(arr)
但是如果这个函数的结果如下:
Array[53]
0:"h"
1:"t"
2:"t"
3:"p"
4:"s"
5:":"
6:"/"
7:"/"
8:"a"
9:"g"
10:"u"
11:"l"
12:"a"
13:"r"
14:"f"
15:"i"
16:"r"
17:"e"
18:"d"
当然这不是我需要的,我需要检索所有电子邮件或所有用户或所有 ID 号。有什么办法可以找回它吗?或者有人可以帮我写一段可以帮助我的代码。
提前致谢。
最佳答案
您可以使用jQuery map function映射对象。
$.map(source, function(item, i){
return source.email; //return what you want
});
如果您只想从 url 检索 json 内容,则需要发出 AJAX 请求。执行此操作的一个简单方法是使用 getJSON function .
$.getJSON("https://<myInstance>.firebaseio.com/users.json", function(result){
// here you get the JSON content
});
看一下这个片段:
window.users = {
"-KOIbPUxKWKMaIOuX1cR": {
"email": "fillocj.rc@gmail.co",
"lastName": "Alberto",
"password": "password",
"userName": "Rodolfo"
},
"-KOOF5S3kDnvsT9nVx85": {
"email": "test@test2.com",
"lastName": "TEST",
"password": "password",
"userName": "TEST"
}
};
function getEmails(users){
return $.map(users, function(item, i){
return item.email;
});
};
function getSampleObject(users){
return $.map(users, function(item, i){
return {
email: item.email,
username: item.userName
};
});
};
$(window).ready(function(){
var emails, users;
emails = getEmails(window.users);
users = getSampleObject(window.users);
$('#output_1').text(JSON.stringify(emails));
$('#output_2').text(JSON.stringify(users));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Retrieves email</h2>
<code id="output_1"></code>
<hr />
<h2>Retrieves object</h2>
<code id="output_2"></code>
关于javascript - JSON Firebase URL 到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38840341/