2011-09-26 14 views
8

Korzystam z usługi Python, która używa marynowanych wiadomości jako części protokołu. Chciałbym zapytać o tę usługę z poziomu Javy, ale aby to zrobić, muszę podnieść moją wiadomość na kliencie (Java). Czy są jakieś implementacje pickle, które działają na JVM (najlepiej przy minimalnych zależnościach)?Jak serializować obiekt Java w taki sposób, że może być deserializowany przez pikle (Python)?

Wyjaśnienie: Modyfikowanie strony serwera nie jest opcją, więc podczas gdy alternatywne serie byłyby wygodne, nie rozwiążą problemu tutaj.

+2

Ojej, to jest brzydkie. Nie sądzę, czy istnieje jakakolwiek szansa na uzyskanie usługi, aby wyprodukować JSON czy coś takiego? W zależności od obsługiwanych danych może to być tak proste jak zamiana 'pickle.dumps' dla' json.dumps'. Faceci odpowiedzialni za tę usługę powinni zdecydowanie dokonać tej zmiany, jeśli jest to możliwe, pickle to naprawdę zły wybór na wszystko oprócz prototypowania i danych, które gwarantują pozostanie w Pythonie (np. Ponieważ nie będzie to miało znaczenia dla niczego oprócz twojej czystej aplikacji Python). – delnan

+0

Powinno być tak proste, jak serializowanie 'Map' Java' do piklowanego 'Hash'a 'Pythona. Nie muszę rozpakowywać po stronie klienta. Pobranie Jythona jako zależności jest wielką pigułką do przełknięcia. –

+0

@SethFitzsimmons: Pickle to protokół specyficzny dla Pythona i zwykle jest uważany za "wewnętrzny" - sam protokół nie jest dokumentowany, a my po prostu używamy standardowych implementacji pikle. Więc jeśli nie chcesz ponownie wdrożyć protokołu w java, będziesz musiał polegać na Pythonie lub Jythonie. –

Odpowiedz

7

Niektóre dodatkowe dochodzenie przyniosły pyrolite, MIT-licencjonowany biblioteka, która pozwala programów Java i .NET interfejs ze światem Pythona. Oprócz funkcji obiektu zdalnego (co ważniejsze) obejmuje on również serializer i dekeretercję.

+2

Pierwotny link jest uszkodzony, bieżący to 'https: // github.com/irmen/Pyrolite /' –

1

Można użyć Java JSON serializatora jak GSON lub Jacksona serilaise dość łatwo i korzystać marynatę python json deserializacji

+0

Oczywiście, ale w tym przypadku nie mam luksusu modyfikowania serwera. –

Powiązane problemy