Java unserialize tefrika php nesne

13 Cevap java

Mümkün olup olmadığını herkes yapılmıştır aslında eğer, php bir nesneyi serialize ve Java (java-php iletişim) bunu nesneleştirmek, biliyor mu. Belki bir adaptör gerekli olacaktır.

Sen ne düşünüyorsun?

Teşekkürler

13 Cevap

PHP ve Java hem kendi (tabii ki farklı) serileştirme düzenlerini kullanabilirsiniz. Ancak, hem okuyup yazabiliyordu bir değişim biçimi kullanabilirsiniz.

Iki en belirgin örnekler XML ve JSON vardır.

Ancak, Google Protokolü Tamponlar gibi başkaları da vardır.

serialized-php-parser , which is a Java implementation that can parse php-serialized objects. In general, if you have the choice, I wouldn't recommend php-serialized as an exchange format, because it isn't ascii-safe (It contains null-bytes). Go with a format like xml or json instead. If you need a bit of type-information, xmlrpc iyi bir seçimdir vardır. Bu php ve Java hem de iyi uygulamaları vardır.

Teorik olarak, bu kesinlikle mümkün. Bu sadece tüm sonra bayt, ve bunlar çözümlenebilir. Tabii ki, serisi nesnesi PHP yöntemlerinin herhangi biri, sadece verileri değil içerecektir. Bunu isterseniz, PHP sınıfları doğrudan karşılık Java sınıfları olarak davranışlarını yeniden olurdu.

En azından bir şartname için hiçbir link the manual yoktur - Uygulamada, asıl sorun PHP serileştirme biçimi resmen belirtilmesi görünmüyor gibi görünüyor.

Yani biçimini anlamak için kod kazmak zorunda kalabilirsiniz.

Tüm bu XML serileştirme gibi bir şey kullanmak çok daha kolay ve daha istikrarlı olacak gibi, bu sesler - Ben iki dilde bu kolaylaştırmak kütüphaneleri vardır eminim.

Sen nasılsa seri hale getirmek istediğiniz nesnenin bir parseable dize temsilini döndürür Bunun için PHP'nin var_export() fonksiyonu yararlanabilirler.

JSON biçiminde başlamak için iyi bir yer olurdu. Java, PHP için uygulamaları ve diğer pek çok dil vardır.

While initially based on the javascript object literal notation, JSON proved convenient for lightweight data transfer between all types of systems.

PHP serileştirme biçimi ile çalışmak için başka bir Java projesi Pherialize.

Diyelim ki böyle bir dizi seri hale diyelim:

array(3) {
  [0]=>
  string(8) "A string"
  [1]=>
  int(12345)
  [2]=>
  bool(true)
}

Sonra böyle Pherialize Java ile bunu unserialize yapabilirsiniz:

MixedArray list = Pherialize.unserialize(data).toArray();
System.out.println("Item 1: " + list.getString(0));
System.out.println("Item 2: " + list.getInteger(1));
System.out.println("Item 3: " + list.getBoolean(2));

Bir Java implementation of PHP var unutmayın. Yani may nesneyi tefrika ve Java PHP örneği, deserialise onu geçmek ve sonra Java altyapı içine aramak mümkün.

Tüm kutsal olmayan bir karmaşa biraz geliyor ama bakarak belki de değer!

xstream seri ve ardından serisini ur kendi php kod yazmak (okunabilir xml içine java nesneleri dönüştürür) deneyin.

Web Hizmetleri (REST, RPC, SOAP) veya yeniden / Java veri okumak sağlayacak düz metin saklamak herhangi başka bir çözüm kullanın.

Ben bu işlevsellik gerekli Drupal (PHP CMS) için bir pasajı hatırlıyorum. Sadece bu kadar Serialized drupal node objects to java (herhangi bir PHP tefrika nesne ile çalışması gerekir) bir göz atın, bulundu.

Belki bunu kullanabilirsiniz. Ben PHP'nin yeni sürümleri ile ilgili sorunlar olup olmadığını bilmiyoruz.

PHP bir nesne seri nesne özelliklerini dökümü. Sonuç dizesi korkunç karmaşık değildir.

echo serialize(
	array(1, null, "mystring", array("key"=>"value"))
);

Sonuçlar:

a:4:{i:0;i:1;i:1;N;i:2;s:8:"mystring";i:3;a:1:{s:3:"key";s:5:"value";}}

Dize veri türleri, dizi uzunlukları, dizi indeksleri ve değerleri tanımlayan, dize uzunlukları ...-ters mühendislik onu ve kendi çözümleyici ile gelip çok fazla çaba almak olmaz, sanırım.

PHP / Java köprüsünü kullanarak da ilginizi çekebilir (http://php-java-bridge.sourceforge.net/). Bu protokolü kendi vardır. Kendi sitesinde bu köprünün hızlı uygulanması olduğunu söyledi.

Önceki cevaplar söylediğim gibi eğer mümkünse, ben PHP nesne serileştirme önleyeceğini. (Aslında PHP serialize () daha hızlıdır) kullanın JSON, tasarruf ya da daha evrensel bazı başka biçimi.

Eğer ben bir Jackson Module etkinleştirmek için okuma çalışan ve Java tefrika PHP yazıyorum hiçbir seçim var. Jackson büyük bir JSON ayrıştırıcı ve PHP serileştirme biçimi iyi bir uyum gibi görünüyordu oldukça benzer olduğu. Bu (yazı hala devam eden bir çalışmadır) hala tam değil.