Ich möchte gerne in der folgenden JSON suchenObjekt für Objekte, die den Schlüssel "location" enthalten, erhalten im Gegenzug ein Array oder ein Json-Objekt mit dem "Namen" der Person plus dem Standortwert dieser Person.
Beispielrückgabe:
var matchesFound = [{Tom Brady, New York}, {Donald Steven, Los Angeles}];
var fbData0 = {
"data": [
{
"id": "X999_Y999",
"location": "New York",
"from": {
"name": "Tom Brady", "id": "X12"
},
"message": "Looking forward to 2010!",
"actions": [
{
"name": "Comment",
"link": "http://www.facebook.com/X999/posts/Y999"
},
{
"name": "Like",
"link": "http://www.facebook.com/X999/posts/Y999"
}
],
"type": "status",
"created_time": "2010-08-02T21:27:44+0000",
"updated_time": "2010-08-02T21:27:44+0000"
},
{
"id": "X998_Y998",
"location": "Los Angeles",
"from": {
"name": "Donald Steven", "id": "X18"
},
"message": "Where"s my contract?",
"actions": [
{
"name": "Comment",
"link": "http://www.facebook.com/X998/posts/Y998"
},
{
"name": "Like",
"link": "http://www.facebook.com/X998/posts/Y998"
}
],
"type": "status",
"created_time": "2010-08-02T21:27:44+0000",
"updated_time": "2010-08-02T21:27:44+0000"
}
]
};
Antworten:
0 für die Antwort № 1@vsiege - Sie können diese Javascript-Lib verwenden (http://www.defiantjs.com/), um Ihre JSON-Struktur zu durchsuchen.
var fbData0 = {
...
},
res = JSON.search( fbData0, "//*[./location and ./from/name]" ),
str = "";
for (var i=0; i<res.length; i++) {
str += res[i].location +": "+ res[i].from.name +"<br/>";
}
document.getElementById("output").innerHTML = str;
Hier ist eine funktionierende Geige;
http://jsfiddle.net/hbi99/XhRLP/
DefiantJS erweitert das globale Objekt JSON um dasMethode "search" und ermöglicht das Abfragen von JSON mit XPath-Ausdrücken (XPath ist eine standardisierte Abfragesprache). Die Methode gibt ein Array mit den Übereinstimmungen zurück (leeres Array, wenn keines gefunden wurde).
Sie können XPath-Ausdrücke testen, indem Sie Ihren JSON hier einfügen:
http://www.defiantjs.com/#xpath_evaluator