2010-12-07 13 views
12

? Esto sería genial, ya que permitiría que mi material xml lea json sin ningún cambio, excepto para el analizador de sax diferente.¿Hay un SaxParser que lea json y desencadene eventos para que se vea como xml

+1

¿Por qué querrías eso? El objetivo de json es no analizarlo como xml. – Falmarri

+1

Parece una solicitud razonable para mí. (@Falmarri - si el único punto de JSON no fuera analizarse como XML, sería una declaración triste sobre JSON). Sin embargo, XML y JSON son lo suficientemente diferentes en estructura que realmente dudo que pueda tener compatibilidad de código 100%, para usar XML código de procesamiento SAX orientado al consumir JSON. Pero podrías acercarte lo suficiente en casos simples. – LarsH

+0

Tanto Xml como Json tienen propiedades e hijos. Son muy similares, solo que su notación es diferente. Ambos tienen 0 o más hijos, y así sucesivamente. Las propiedades de un objeto json se pueden ver como atributos xml, etc. –

Respuesta

9

si nos referimos, analizador basado en eventos a continuación, hay un par de proyectos que hay que hacer esto: Interfaz

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

    Stoppable SAX-como para el streaming de entrada de texto JSON

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

    Jackson Streaming API es similar a la API de Stax

+0

Buen punto; tal vez no sea tanto para SAX, sino para el estilo SAX (procesamiento incremental, en lugar del modelo de árbol) – StaxMan

0

Creo que es una mala idea intentar tratar JSON como si se tratara de XML (que es lo que se pregunta, en esencia); sin embargo, Jettison hace justamente esto. Expone contenido JSON a través de Stax API (javax.xml.stream). Y si realmente quieres SAX, escribir un contenedor desde Stax a SAX también es trivial (pero no al revés).

También creo que puede obtener mejores respuestas si explica un poco más lo que está tratando de lograr, más allá de los mecanismos que espera utilizar. Por ejemplo, hay muchas herramientas de enlace de datos para XML y JSON; y el uso de tales herramientas podría ocultar detalles de un nivel inferior mucho mejor que usar la abstracción destinada a procesar el otro.

+1

Puede ser una buena idea procesar objetos JSON grandes como una secuencia, en contraste con cargar todo en la memoria. – Regenschein

+0

Claro, y eso es lo que ofrecen muchos paquetes JSON: Jackson y GSON tienen analizador/generador de transmisión, e incluso permiten la combinación de acceso de transmisión y vinculación de datos para datos parciales (subárboles).Entonces SAX es solo una API de transmisión, y una no diseñada para JSON, sino XML. – StaxMan

+0

Me doy cuenta de que esta respuesta se ha escrito hace años, pero tengo curiosidad * ¿por qué * le pareció "una mala idea intentar tratar a JSON como si fuera XML"? – stakx

Cuestiones relacionadas