Преобразователь JSON в JSON

У меня есть сценарий.

Требуемый ввод и вывод - JSON.

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


// Output
{
  "NewObject": {
    "Time": 1351160457922,
    "Title": "OName",
    "quantity": 100
  }
}

Мне нужен некоторый код преобразования или предпочтительно язык типа xslt для преобразования json из одного формата в другой. Этот трансформатор также должен быть быстрым, поскольку преобразование будет выполняться на лету.



редактировать

Я неу него нет определения полученного объекта INPUT, и он может измениться во время выполнения. но я могу использовать класс для объекта OUTPUT, если это необходимо. Я пытался сделать это какJSON -> xml -> xslt -> xml -> JSON, но приблизительно 1000 объектов получаются в секунду на этом конце, и этот процесс может потребовать дополнительных затрат.

Я не могу также использовать JavaScript, так как myApp простоJava-приложение на базе Windows и использование JavaScript может вызвать накладные расходы.

 apsillers16 сент. 2014 г., 14:02
возможный дубликатXSLT-эквивалент для JSON
 Chaturvedi Dewashish25 окт. 2012 г., 14:22
Немного беспокойства - будет ли это достаточно хорошо с точки зрения производительности, так как этот Javascript должен будет исправлять около 1000 JSON-объектов в секунду?
 KARASZI István26 окт. 2012 г., 11:04
Тогда вы должны удалить тег javascript :)
 KARASZI István25 окт. 2012 г., 14:15
Вы можете найти реализации для этого, например:github.com/bruth/jsonpatch-js
 Chaturvedi Dewashish25 окт. 2012 г., 14:13
да, конечно, я могу использовать JavaScript. но более предпочтительно язык типа xslt и процессор-преобразователь
 Jes22 сент. 2016 г., 14:12
Я написал библиотеку для выполнения именно этого (в Groovy, легко интегрируемый в Java и достаточно простой для переноса):github.com/ripdajacker/json-transformer
 KARASZI István25 окт. 2012 г., 14:15
Как насчет патча JSON?tools.ietf.org/html/draft-pbryan-json-patch-00

Ответы на вопрос(6)

Вы можете сделать это преобразование сJSON патч.

Пример с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);

Я не проверял это, но должно работать так.

 Chaturvedi Dewashish25 окт. 2012 г., 14:36
Я использую Java, и это будет приложение для рабочего стола Windows.
 Chaturvedi Dewashish25 окт. 2012 г., 14:29
Немного беспокойства - будет ли это достаточно хорошо с точки зрения производительности, так как этот Javascript должен будет исправлять около 1000 JSON-объектов в секунду?
 KARASZI István25 окт. 2012 г., 14:33
Это зависит от вашей ситуации. Если вы хотите сделать это на стороне сервера, вы можете иметь разные реализации на разных языках. Я опубликовал это, потому что в вашем вопросе был тег javascript.

Другим вариантом является использование Logz.ioлесопилка библиотека. Вы определяете конвейер и выполняете его. Для вас пример:

{
  steps: [
    {
      rename {
         config {
            from: "OldObject"
            to: "NewObject"
         }
      }
    }

    {
      removeField {
        config {
          path: "NewObject.price"
        }
      }
    }

    {
      rename {
        config {
          from: "NewObject.Name"
          to: "NewObject.Title"
        }
      }
    }
  ]
}
Решение Вопроса

Вы можете использовать ZORBA и JsonIQhttp://www.jsoniq.org/ Тем не менее, это 'Это нативная библиотека, она поставляется с оболочкой, поэтому вы можете использовать ее в Java.

 mvallebr22 нояб. 2012 г., 21:19
Посмотрите на мою обертку слишком поздно, может быть полезно:github.com/mvallebr/ZorbaJavaWrapper

Пытатьсятряска, Это библиотека преобразования JSON в JSON, написанная на Java. Он был создан для проекта, который преобразовывал много JSON из ElasticSearch "бэкенд» на интерфейс API.

Для преобразования JSON, которое вы перечислили в своей задаче, Jolt "сдвиг" спецификации будут:

// 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"
    }
}

Вы можете попробовать библиотеку JavaSilencio это позволяет вам конвертировать каждый узел файла JSON в новые значения. Вы можете решить, какие и как узлы должны быть преобразованы.

Ваш ответ на вопрос