2016-08-09 31 views
0

我需要获取阵列的Firebase链接。我有以下链接HTTPS://.firebaseio.com/users.json这是会检索以下JSON文件:JSON Firebase URL到阵列

{ 
    "-KOIbPUxKWKMaIOuX1cR": { 
     "email": "[email protected]", 
     "lastName": "Alberto", 
     "password": "password", 
     "userName": "Rodolfo" 
    }, 
    "-KOOF5S3kDnvsT9nVx85": { 
     "email": "[email protected]", 
     "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号和。有什么方法可以检索吗?或者有人可以帮我解决一段可以帮助我的代码。

在此先感谢。

回答

1

您可以使用jQuery map function来映射对象。

$.map(source, function(item, i){ 
    return source.email; //return what you want 
}); 

如果您只是想从url中检索json内容,您需要提出AJAX请求。一个简单的方法是使用。

$.getJSON("https://<myInstance>.firebaseio.com/users.json", function(result){ 
     // here you get the JSON content 
    }); 

看看这个片断:

window.users = { 
 
    "-KOIbPUxKWKMaIOuX1cR": { 
 
     "email": "[email protected]", 
 
     "lastName": "Alberto", 
 
     "password": "password", 
 
     "userName": "Rodolfo" 
 
    }, 
 
    "-KOOF5S3kDnvsT9nVx85": { 
 
     "email": "[email protected]", 
 
     "lastName": "TEST", 
 
     "password": "password", 
 
     "userName": "TEST" 
 
    } 
 
}; 
 

 

 

 
function getEmails(users){ 
 
    return $.map(users, function(item, i){ 
 
    \t 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>

+0

这太神奇了!但是,我怎样才能从AJAX请求中编码呢?请,这个例子太棒了!请!!我正在阅读文档,但使用ajax请求的效果会提高一千倍!请,请! –

+0

当你创建一个AJAX时,你会得到一个回调函数的结果,因为它是异步的。所以你会传递一个期望结果的函数。 –

0
var o = 'https://<myInstance>.firebaseio.com/users.json'; 
var arr = Object.keys(o).map(function (k) { return o[k] }); 
console.log(arr) 

当我看到你的VAR o等于你需要firstable做出的请求......用ajax或任何你想要的,如果你看不到阵列包含URL的每一个字的URL(串)...

+0

不,不,我不需要检索'VAR O'的每一个字,我需要做的是从URL中检索所有电子邮件变量。我很抱歉,也许我没有解释清楚我的问题。 –

+0

是的,我知道,但我说你的代码是什么,你回来的网址,因为你没有先做一个AJAX请求 –