Transformator JSON do JSON
Mam scenariusz.
Wymagane wejście i wyjście to JSON.
// Input
{
"OldObject": {
"Time": 1351160457922,
"Name": "OName",
"quantity": 100,
"price": 10
}
}
// Output
{
"NewObject": {
"Time": 1351160457922,
"Title": "OName",
"quantity": 100
}
}
Potrzebuję kodu transformacji lub najlepiej języka typu xslt, aby przekształcić json z jednego formatu na drugi. Transformator ten również musi być szybki, ponieważ transformacja będzie wykonywana w locie.
Edit
Nie mam odebranej definicji obiektu wejściowego i może się ona zmienić w czasie wykonywania. ale w razie potrzeby mogę użyć klasy dla obiektu wyjściowego.
Próbowałem to zrobić jako json - > xml - >xslt - > xml - > json, ale na tym końcu odbierane jest około 1000 obiektów na sekundę i ten proces może być obciążony kosztami.
Nie mogę również korzystać z JavaScript, ponieważ myApp jest prosta Aplikacja java oparta na systemie windows i korzystanie z JavaScript może powodować koszty ogólne.
6 answers
Możesz użyć ZORBA i JsonIQ http://www.jsoniq.org/ Jednak jest to natywna Biblioteka, jest dostarczana z opakowaniem, dzięki czemu można go używać w Javie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 20:43:34
Spróbuj wstrząs . Jest to biblioteka transformacji JSON do JSON napisana w Javie. Został stworzony w ramach projektu, który przekształcał wiele JSON z "backendu" ElasticSearch do interfejsu API.
Dla transformacji JSON, którą wymieniłeś w swoim problemie, parametr "shift" byłby następujący:
// 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"
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-01 20:34:15
Możesz wykonać tę transformację za pomocą JSON patch.
Przykład z 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);
Nie testowałem tego, ale powinno tak działać.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-20 06:57:56
Javascript JSON Transformer : https://raw.githubusercontent.com/udhayasoftware/codebase/master/standalone/javascript/TransformJSON.js
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 15:50:04
Możesz wypróbować bibliotekę Java Silencio , która pozwala przekonwertować każdy węzeł pliku JSON na nowe wartości. Możesz zdecydować, które i jak węzły mają zostać przekształcone.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-18 18:26:40
Inną opcją jest użycie Logz.io Tartak biblioteka. Definiujesz potoki i wykonujesz je. Dla przykładu:
{
steps: [
{
rename {
config {
from: "OldObject"
to: "NewObject"
}
}
}
{
removeField {
config {
path: "NewObject.price"
}
}
}
{
rename {
config {
from: "NewObject.Name"
to: "NewObject.Title"
}
}
}
]
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-22 13:58:39