2016-08-09 10 views
0

Ich brauche als Array einen Firebase-Link. Ich habe folgenden Link https: //.firebaseio.com/users.json, die folgende JSON-Datei abgerufen wird:JSON Firebase-URL zu Array

{ 
    "-KOIbPUxKWKMaIOuX1cR": { 
     "email": "[email protected]", 
     "lastName": "Alberto", 
     "password": "password", 
     "userName": "Rodolfo" 
    }, 
    "-KOOF5S3kDnvsT9nVx85": { 
     "email": "[email protected]", 
     "lastName": "TEST", 
     "password": "password", 
     "userName": "TEST" 
    } 
} 

und ich bin mit der folgenden Funktion in Javascript zu bekommen eine Umwandlung zu machen:

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

Aber das Ergebnis, wenn diese Funktion ist die folgende:

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" 

und das ist natürlich nicht das, was ich brauche, ich brauche alle E-Mails oder alle Benutzer oder alle ID-Nummern abzurufen. Gibt es eine Möglichkeit, das zu erhalten? Oder kann mir jemand mit einem Code helfen, der mir helfen kann?

Vielen Dank im Voraus.

Antwort

1

Sie können jQuery map function verwenden, um Objekte zuzuordnen.

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

Wenn Sie nur den json Inhalt aus der URL Sie eine AJAX-Anforderung vornehmen müssen abrufen möchten. Ein einfacher Weg, dies zu tun, ist .

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

einen Blick auf diese Schnipsel Nehmen:

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

Das ist erstaunlich! Aber wie kann ich es aus AJAX-Anfrage programmieren ?. Bitte, das Beispiel ist großartig! Bitte!! Ich lese die Dokumentation, aber es würde mit der Ajax-Anfrage tausendmal besser funktionieren! Bitte bitte! –

+0

Wenn Sie ein AJAX erstellen, erhalten Sie das Ergebnis in einer Callback-Funktion, weil es asynchron ist. Sie werden also eine Funktion übergeben, die das Ergebnis erwartet. –

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

Wie ich sehe deine var o auf die URL gleich ist (string) Sie benötigen firstable die Anfrage zu machen ... Ajax oder was auch immer Sie wollen, wenn Sie das Array sehen jedes Wort der URL enthält ...

+0

Nein, nein, ich muss das jedes Wort des 'var o' nicht abrufen, was ich tun muss, besteht darin, alle E-Mail-Variablen von der URL abzurufen. Es tut mir so leid, vielleicht habe ich meine Frage nicht gut erklärt. –

+0

Ja, ich weiß, aber ich sage, was in deinem Code ist, du gibst die URL zurück, weil du keine Ajax-Anfrage machst. –