/ / JSON nach mehreren Werten durchsuchen, keine Bibliothek verwenden - json, search

Durchsuchen Sie JSON nach mehreren Werten und verwenden Sie keine Bibliothek - json, search

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