2010-12-07 7 views
12

Das wäre großartig, da es meinem XML-Material erlauben würde, json ohne irgendeine Änderung außer dem verschiedenen Sax Parser zu lesen.Gibt es einen SaxParser, der JSON liest und Ereignisse auslöst, so sieht es wie xml aus

+1

Warum würden Sie das wollen? Der Punkt von json ist, es nicht wie xml zu analysieren. – Falmarri

+1

Scheint wie eine angemessene Anfrage an mich. (@Falmarri - wenn JSONs einziger Punkt nicht wie XML geparst werden müsste, wäre das eine traurige Aussage über JSON.) XML und JSON sind jedoch unterschiedlich genug in der Struktur, dass ich wirklich bezweifle, dass man 100% Code-Kompatibilität haben kann, um XML zu verwenden -orientierter SAX-Verarbeitungscode beim Konsum von JSON. Aber Sie könnten in einfachen Fällen nah genug kommen. – LarsH

+0

Sowohl Xml als auch Json verfügen über Eigenschaften und untergeordnete Elemente. Sie sind sehr ähnlich, nur ihre Notation ist anders. Beide halten 0 oder mehr Kinder und so weiter. Eigenschaften eines JSON-Objekts könnten als Xml-Attribute usw. angesehen werden. –

Antwort

9

Wenn Sie gemeint, ereignisbasierte Parser dann gibt es ein paar Projekte gibt, die dies tun:

  1. http://code.google.com/p/json-simple/

    aufhaltbare SAX-ähnliche Oberfläche für die Eingabe Streaming von JSON Text

  2. http://jackson.codehaus.org/Tutorial

    Jackson Streaming API ist ähnlich wie Stax API

+0

Guter Punkt; vielleicht ist es nicht so sehr für SAX, aber SAX-Stil (inkrementelle Verarbeitung, statt Baummodell) – StaxMan

0

Ich denke, dass es eine schlechte Idee ist JSON, um zu versuchen zu behandeln, als ob es XML war (das ist, was Sie im Wesentlichen fragen); aber Jettison tut genau das. Es stellt JSON-Inhalte über die Stax API (javax.xml.stream) zur Verfügung. Und wenn Sie wirklich SAX wollen, ist das Schreiben von Wrapper von Stax nach SAX auch trivial (aber nicht umgekehrt).

Ich denke auch, Sie könnten bessere Antworten bekommen, wenn Sie etwas mehr erklären, was Sie erreichen wollen, jenseits der Mechanismen, die Sie zu verwenden hoffen. Zum Beispiel gibt es viele Datenbindungstools für XML und JSON; Die Verwendung solcher Werkzeuge könnte Details auf niedrigerer Ebene viel besser verbergen als die Verwendung von Abstraktion, die für die Verarbeitung des anderen gedacht ist.

+1

Es könnte eine gute Idee sein, große JSON-Objekte als Stream zu verarbeiten, im Gegensatz zum Laden von allem in den Speicher. – Regenschein

+0

Sicher, und das ist es, was viele JSON-Pakete bieten: Jackson und GSON haben beide Streaming-Parser/Generator und erlauben sogar die Kombination von Streaming-Zugang und Datenbindung für Teildaten (Teilbäume).So ist SAX nur eine Streaming-API und eine nicht für JSON, sondern für XML. – StaxMan

+0

Ich weiß, dass diese Antwort schon vor Jahren geschrieben wurde, aber ich bin neugierig * warum * es schien dir "eine schlechte Idee, JSON zu behandeln, als ob es XML wäre"? – stakx