2012-10-25 17 views
15

Bir senaryom var.JSON transformatörüne JSON

Gerekli giriş ve çıkışlar JSON'dir.

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


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

başka bir biçimden diğerine json dönüştürmek için bir dönüştürme kod ya da tercihen xslt tip dil ​​gerekir. Bu transformatör aynı zamanda hızlı bir şekilde dönüşüme de ihtiyaç duyulacaktır. Ben GİRİŞ nesnenin tanımını yok


Düzenlemesi alındı ​​ve çalışma zamanında değişebilir. ancak gerekirse OUTPUT nesnesi için sınıf kullanabilirim. Bunu json -> xml -> xslt -> xml -> json olarak denedim, ancak bu noktada saniyede yaklaşık 1000 nesne alındı ​​ve bu işlem ek yüke neden olabilir.
Ayrıca JavaScript kullanamıyorum, uygulama benim için windows tabanlı java uygulaması ve JavaScript kullanımı ek yüke neden olabilir.

+0

Evet, javascript kullanabilirim. fakat daha tercihen xslt tipi dil ve trafo işlemcisi –

+3

JSON yaması hakkında ne var? http://tools.ietf.org/html/draft-pbryan-json-patch-00 –

+1

Bunun için uygulamaları bulabilirsiniz, örneğin: https://github.com/bruth/jsonpatch-js –

cevap

4

ZORBA ve JsonIQ http://www.jsoniq.org/ 'u kullanabilirsiniz. Ancak, bu bir yerel kitaplıktır, bir sarıcı ile birlikte gelir, böylece onu java'da kullanabilirsiniz.

+0

Sargıya çok daha sonra bir göz atın, yardımcı olabilir: https://github.com/mvallebr/ZorbaJavaWrapper – mvallebr

9

Bu dönüşümü JSON patch ile yapabilirsiniz. jsonpatch-js ile

Örnek:

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); 

Bunu test etmedi, ama bu gibi çalışması gerekir.

+0

Biraz endişe - Bu Javascript saniye başına yaklaşık 1000 JSON nesnesi yama olurdu bu yeterince iyi performans olacak mı? –

+0

Durumunuza bağlıdır. Bunu sunucu tarafında yapmak isterseniz, farklı dillerde farklı uygulamalara sahip olabilirsiniz. Bunu gönderdim çünkü sorunuzda bir javascript etiketi vardı. –

+0

Java kullanıyorum ve Windows tabanlı masaüstü uygulaması olacak. –

14

JOLT'u deneyin. Java ile yazılmış JSON dönüşüm kütüphanesidir. JSON'un bir parçasını ElasticSearch "backend" ten bir frontend api'ye dönüştüren bir projede yaratıldı. JSON için

Eğer problemde listeledik dönüşümü, Jolt "shift" Spec olacaktır:

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

Sen olanak sağlar Java kütüphanesi Silencio deneyebilirsiniz JSON dosyasının her bir düğümünü yeni değerlere dönüştürmek. Hangi düğümlerin dönüştürüleceğine karar verebilirsiniz.

0

Başka bir seçenek de Logz.io Sawmill kütüphanesini kullanmaktadır. Bir boru hattı tanımlar ve yürütürsünüz. Sizin için örnek:

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

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

    { 
     rename { 
     config { 
      from: "NewObject.Name" 
      to: "NewObject.Title" 
     } 
     } 
    } 
    ] 
}