xmlmapper online java json xslt jackson

java - online - Transformador de JSON a JSON



Tengo un escenario.

La entrada y salida requeridas son JSON.

// Input { "OldObject": { "Time": 1351160457922, "Name": "OName", "quantity": 100, "price": 10 } } // Output { "NewObject": { "Time": 1351160457922, "Title": "OName", "quantity": 100 } }

Necesito un código de transformación o, preferiblemente, un lenguaje de tipo xslt para transformar json de un formato a otro. Este transformador también debe ser rápido, ya que la transformación se realizará sobre la marcha.

Editar
No tengo la definición del objeto ENTRADA recibido y podría cambiar en el tiempo de ejecución. pero puedo usar la clase para el objeto SALIDA si es necesario. He intentado hacer esto como json -> xml -> xslt -> xml -> json , pero se reciben aproximadamente 1000 objetos por segundo en este extremo y este proceso puede incurrir en gastos generales.
Tampoco puedo usar JavaScript, ya que myApp es una aplicación java sencilla basada en Windows y el uso de JavaScript puede causar una sobrecarga.


Otra opción es usar Logz.io Sawmill library. Usted define una tubería y la ejecuta. Para tu ejemplo:

{ steps: [ { rename { config { from: "OldObject" to: "NewObject" } } } { removeField { config { path: "NewObject.price" } } } { rename { config { from: "NewObject.Name" to: "NewObject.Title" } } } ] }


Prueba con JOLT . Es una biblioteca de transformación de JSON a JSON escrita en Java. Fue creado en un proyecto que estaba transformando gran parte de JSON de un "backend" de ElasticSearch a una interfaz de usuario.

Para la transformación JSON que has enumerado en tu problema, la especificación de "cambio" de Jolt sería:

// Jolt "shift" spec { "OldObject": { "Time": "NewObject.Time", "Name": "NewObject.Title", // if the input has "OldObject.Name", copy it''s value // to "NewObject.Title "quantity": "NewObject.quantity" } }


Puede probar la biblioteca Java Silencio que le permite convertir cada nodo del archivo JSON en nuevos valores. Puedes decidir cuáles y cómo se deben transformar los nodos.


Puedes hacer esta transformación con el parche JSON .

Ejemplo con github.com/bruth/jsonpatch-js :

var transformations = [ { move: ''/OldObject'', to: ''/NewObject'' }, { remove: ''/NewObject/price'' }, { move: ''/NewObject/Name'', to: ''/NewObject/Title'' } ]; var oldObject = { "OldObject": { "Time": 1351160457922, "Name": "OName", "quantity": 100, "price": 10 } }; jsonpatch.apply(oldObject, transformations);

No probé esto, pero debería funcionar así.


Puedes usar ZORBA y JsonIQ http://www.jsoniq.org/ Sin embargo, es una biblioteca nativa, viene con un envoltorio para que puedas usarlo en java.