java - online - Transformador de JSON a JSON
json transformer online (6)
Javascript JSON Transformer: https://raw.githubusercontent.com/udhayasoftware/codebase/master/standalone/javascript/TransformJSON.js
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.