2011-09-26 15 views
8

Protokolünün bir parçası olarak paketlenmiş iletileri kullanan bir Python hizmetini kullanıyorum. Bu servisi Java'dan sorgulamak istiyorum, ancak bunu yapmak için mesajımı istemcide (Java) seçmem gerekiyor. JVM'de (ideal olarak en az bağımlılıkla) çalışan herhangi bir pickle uygulaması var mı?Bir Java nesnesini, turşu (Python) tarafından serileştirilebilecek şekilde nasıl serileştiririm?

Açıklama: Sunucu tarafının değiştirilmesi bir seçenek değildir, bu nedenle alternatif serileştirmeler uygun olurken, sorunu burada çözmezler.

+2

Bu çok çirkin. Sanmıyorum, JSON veya bir şey üretmek için servis alma şansı var mı? Sunulan verilere bağlı olarak, json.dumps' için 'pickle.dumps' swapping'i yapmak kadar basit olabilir. Bu hizmetin arkasındaki adamlar, eğer mümkün olursa, bu değişikliği kesinlikle yapmalıdırlar. Python içinde kalmayı garantileyen prototip ve veriler dışında herhangi bir şey için turşu gerçekten çok kötü bir seçimdir (örneğin, saf Python uygulamanız dışında bir şey için hiç bir şey yapmayacağı için)). – delnan

+0

Bir Java 'Map''i turşu Python' Hash''a serileştirmek kadar basit olmalıdır. İstemci tarafında şifrelenmem gerekmiyor. Jython'a bağımlılık olarak çekmek, yine de yutmak için büyük bir hapdır. –

+0

@SethFitzsimmons: Pickle, Python'a özel bir protokoldür ve genellikle 'internal' olarak kabul edilir - protokolün kendisi belgelenmez ve sadece standart turşu uygulamalarını kullanırız. Protokolü java'da yeniden yapılandırmak istemedikçe, Python veya Jython'a bağlı olmanız gerekir. –

cevap

7

bazı ek soruşturma pyrolite, Java ve .NET programlarını sağlayan bir MİT lisanslı kütüphane vermiştir serisini bir piton json turşu kullanmak GSON veya Jackson gibi bir Java JSON seri hale kullanabilirsiniz Python dünyası ile arayüz. Uzak nesne işlevselliğine ek olarak, (daha da önemlisi) bir pickle seri hale getirici ve de-serializer içerir.

+2

Orijinal bağlantı bozuk, şu anki adres "https: // github.com/irmen/Pyrolite /' –

1

Sen oldukça kolay serilaise ve

+0

Elbette, ancak bu durumda sunucuyu değiştirme lüksüne sahip değilim. –

İlgili konular