JSONPath oder anderen XPath-ähnliches Werkzeug für JSON/Javascript, bzw. Jquery-JSON
Schaue ich JSONPath und obwohl es scheint ziemlich gut gemacht, ich Frage mich, ob jemand mit ihm gearbeitet und kann Kommentar auf Ihre usability, oder kann alternativen empfehlen? Was wäre wirklich slick ist, ob es ein plugin für JQuery, dass so etwas Tat. Ich Suche die plugins und kommen mit leeren Händen. Sowieso, bevor ich verbringen Sie Zeit kennen zu lernen JSONPath (die hat einige Aspekte, die ich bin nicht scharf auf), oder bevor ich die Räder neu erfinden, ich dachte, ich würde sehen, ob jemand einen Winkel auf dieser...
Um Ihnen eine Idee geben, was ich meine, stellen Sie sich diese Javascript-Objekt:
var Characters=[
{
id: "CuriousGeorge",
species:"Monkey",
mood: "curious",
appendage: [
{
type: "hand",
side: "left",
holding: [
{ id: "Banana" }
]
},
{
type: "hand",
side: "right",
holding: []
},
{
type: "foot",
side: "left",
holding: []
},
{
type: "foot",
side: "right",
holding: [
{ id: "YellowHat" },
{ id: "Keys" }
]
}
]
},
{
id: "ManInYellowHat",
species: "Human",
mood: "angry",
//...ok, you get it...
}
]
Wäre es nicht toll, einige der tieferen Objekte durch so etwas wie Jquery Selektoren?
var banana=SomeUtility("Characters holding #Banana").get(0);
var leftHands=SomeUtility("Characters appendage[type=hand][side=left]").get();
(Dies kann qualifizieren sich für die worlds corniest code-Beispiel, aber hey, meine Kinder nur zugesehen. Und ich kann kein konkretes Beispiel, weil der NDA...)
...Und, um es interessanter zu machen, wenn ich wurden, um so etwas zu schaffen, würde jeder es nutzen?
InformationsquelleAutor der Frage jwl | 2009-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Check-out JSON Wählen - CSS-artige Selektoren für JSON.
InformationsquelleAutor der Antwort orad
Würde auf jeden Fall ein nützliches Dienstprogramm.
Meiner Meinung nach ist der beste Weg, um Ansatz wäre, zu bleiben, so ähnlich wie möglich zu css-Selektoren, wie Sie angeben. Ich würde empfehlen, der Suche unter der Haube auf jquery's Implementierung der Selektoren.
Ich würde vorschlagen, etwas wie
statt Ihre Anwendungsbeispiele.
Ich bin mir nicht sicher, wie die kommenden native json-Unterstützung Einfluss auf dieses...
InformationsquelleAutor der Antwort cofiem
OK, habe ich einen Prototyp für diese, finden Sie hier: http://code.google.com/p/jfunk/
Es hat sich bereits als nützlich für mich, also werde ich wohl langsam verbessern und umgestalten in etwas schönes. Aber wenn ich gutes feedback habe, kann ich mehr bewegen schnell. Ich würde es auch begrüßen helfen.
InformationsquelleAutor der Antwort jwl
Versuchen, mit JSPath -- https://github.com/dfilatov/jspath.
JSPath ist eine domain-specific-language (DSL), die es Ihnen ermöglicht zu navigieren und finden von Daten innerhalb Ihrer JSON-Dokumente. Mit JSPath, können Sie Elemente von JSON um zum abrufen der Daten, die Sie enthalten.
JSPath für JSON wie ein XPath für XML.
InformationsquelleAutor der Antwort dfilatov
Dojo ' s dojo.getObject hat eine Anlage, die funktioniert Locker wie dieser, wo man einen Pfad wie in "ein.b.c" um die Immobilie, die Sie abholen wollen.
Check it out:
http://api.dojotoolkit.org/jsdoc/1.3/dojo.getObject
Ich glaube nicht, dass es versteht arrays ganz gut und ich denke, dass es fehlt, ist ein full-featured-selector-Sprache, wie Sie Sie vorschlagen.
Als für die Nutzung, ich habe kodiert, eine selector-Sprache, wie Sie Sie vorschlagen, aber für einen Kunden, und der array-Adressierung ist sehr proprietär, um Ihre Besondere Objekt-Struktur.
Ich würde definitiv verwenden Sie ein system wie dieses, wenn Sie waren, um es, und vielleicht sogar dazu beitragen, wenn ich sah, ein Bereich, der mir helfen könnte.
InformationsquelleAutor der Antwort Maciek
Schrieb ich einfach eine clientseitige JS-lib, die tut genau dies - es macht es möglich, die Abfrage einer JSON Struktur mit XPath.
@jlarson - mit "defiant.js" können Sie die Abfrage von JSON-Struktur wie folgt aus (diese lib erweitert die Globale JSON-Objekt):
Dieser Aufruf gibt ein array zurück mit den passenden Knoten UND die Spiele werden nicht losgelöst von Ihren ursprünglichen JSON-Objekt (Gleiches Verhalten wie bei der Arbeit mit XML + XPath). Um zu veranschaulichen, was ich meine, hier ist ein wenig pseudo(-ish) code:
Diese lib ist bisher für die browser-und clientseitigen aber ich habe Pläne, neu zu schreiben es für NodeJS schließlich. Überprüfen Sie heraus die Xpath evaluator von hier; das verdeutlicht die Funktionalität. Es gibt auch vor-geschrieben Xpath-Ausdrücke:
http://defiantjs.com/#xpath_evaluator
Finden Sie die lib auf Github zur Verfügung:
https://github.com/hbi99/defiant.js
Endlich gibt es ein wenig mehr Funktionalität in "defiant.js" und wenn du interessiert bist, wirst du hoffentlich Lesen über es dort (http://defiant.com)
Ich hoffe, Sie finden es nützlich.
InformationsquelleAutor der Antwort Hakan Bilgin
Sieht aus wie es eine neue option: jQuery-JSONPath. Scheint genau das, was Sie für Fragen.
InformationsquelleAutor der Antwort gregsdennis