2010-12-07 30 views
12

Ce serait génial car il permettrait à mes trucs xml de lire json sans aucun changement, sauf pour l'analyseur syntaxique différent.Y at-il un SaxParser qui lit les événements json et déclenche donc il ressemble à xml

+1

Pourquoi voudriez-vous cela? Le point de json est de ne pas l'analyser comme xml. – Falmarri

+1

On dirait une demande raisonnable pour moi. (@Falmarri - si le seul point de JSON ne devait pas être analysé comme XML, ce serait une déclaration triste sur JSON.) Cependant XML et JSON sont assez différents dans la structure que je doute vraiment que vous pourriez avoir 100% de compatibilité avec le code XML code de traitement SAX orienté lors de la consommation de JSON. Mais vous pourriez être assez proche dans des cas simples. – LarsH

+0

Xml et Json ont des propriétés et des enfants. Ils sont très similaires seulement leur notation est différente. Les deux tiennent 0 ou plusieurs enfants et ainsi de suite. Les propriétés d'un objet json peuvent être vues comme des attributs xml, etc. –

Répondre

9

Si vous vouliez dire, analyseur événementiel puis il y a quelques projets là-bas qui font:

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

    Stoppable Interface SAX comme pour l'entrée en continu du texte JSON

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

    Jackson API streaming est similaire à Stax API

+0

Bon point; peut-être pas pour SAX mais pour le style SAX (traitement incrémental, au lieu du modèle d'arbre) – StaxMan

0

Je pense qu'il est une mauvaise idée d'essayer de traiter JSON comme si elle était XML (qui est ce que vous demandez essentiellement); Cependant, Jettison fait juste cela. Il expose le contenu JSON via l'API Stax (javax.xml.stream). Et si vous voulez vraiment SAX, écrire un wrapper de Stax à SAX est également trivial (mais pas l'inverse).

Je pense aussi que vous pourriez obtenir de meilleures réponses si vous expliquiez un peu plus ce que vous essayez d'atteindre, au-delà des mécanismes que vous espérez utiliser. Par exemple, il existe de nombreux outils de liaison de données pour XML et JSON; et en utilisant de tels outils, il est beaucoup plus facile de cacher les détails de niveau inférieur que d'utiliser l'abstraction pour que l'un traite l'autre.

+1

Il peut être judicieux de traiter de gros objets JSON en tant que flux, contrairement au chargement de tout en mémoire. – Regenschein

+0

Bien sûr, et c'est ce que proposent de nombreux paquets JSON: Jackson et GSON ont tous deux un parseur/générateur de streaming, et permettent même la combinaison d'accès en streaming et de liaison de données pour les données partielles.Donc, SAX est juste une API de streaming, et une non conçue pour JSON mais XML. – StaxMan

+0

Je réalise que cette réponse a été écrite il y a des années, mais je suis curieux * pourquoi * il vous a semblé "une mauvaise idée d'essayer de traiter JSON comme si c'était du XML"? – stakx