简体   繁体   English

将Java序列化对象反序列化为Scala类

[英]Deserialize java serialized object to Scala class

I need to read a serialized object (done in Java) from Redis database) and convert it to a case class in Scala. 我需要从Redis数据库中读取序列化的对象(在Java中完成),并将其转换为Scala中的case类。

The serialized object is like this: 序列化的对象是这样的:

sr?models.mongo.Memberxrcom.mongodb.BasicDBObject¹Ʒ# Z?_isPartialObjectxrorg.bson.BasicBSONObject¹Ʒ# xrjava.util.LinkedHashMap4 N\\?l Z?accessOrderxrjava.util.HashMap ` F loadFactorI thresholdxp?@w ?t_idsrorg.bson.types.ObjectId¹Ʒ# I_incI_machineZ_newI_timexp6 Uҕ t addressessrcom.mongodb.BasicDBList¹Ʒ# Z?_isPartialObjectxrorg.bson.types.BasicBSONList¹Ʒ# xr?java.util.ArrayListx a Isizexpwsq~?@w tidsr?java.lang.Long; ̏# Jvaluexr?java.lang.Number ? xp,#t first_nametsdsdt last_nametsdsdt?contact_numberttstreett?Tuas Avenue 13t?building_not13t address_typetStbuildingq~t company_nameq~tfloorq~t?unit_numberq~tcitytSGtcountrytSGtgeolocsq~?@ w?tsourcetonemapttypetPointt?coordinatessq~ mobile_numberptpostcodet638985ttypesrjava.lang.Integer⠤ 8Ivaluexq~tprioritysq~9tsourcetSINGPOSTt source_idsq~? xxtchanneltIGG, firefox(40) on mac os x (desktop), 6bfda0b, 2015-08-17 12:0 sr?models.mongo.Memberxrcom.mongodb.BasicDBObject¹## Z?_isPartialObjectxrorg.bson.BasicBSONObject¹## xrjava.util.LinkedHashMap4.N \\?l?Z?accessOrderxrjava.util.HashMap。 F loadFactorI thresholdxp?@w?t_idsrorg.bson.types.ObjectId¹Ʒ# I_incI_machineZ_newI_timexp6 ҕttssrcom.mongodb.BasicDBList¹Ʒ# Z? .util.ArrayListx ^ a.Isizexpwsq〜?@w tidsr?java.lang.Long;̏# Jvaluexr?java.lang.Number ? xp,#t first_nametsdsdt last_nametsdsdt?contact_numberttstreett ?大士大道13吨?building_not13t address_typetStbuildingq〜牛逼company_nameq〜tfloorq〜T'unit_numberq〜tcitytSGtcountrytSGtgeolocsq〜?沃顿?tsourcetonemapttypetPointt?coordinatessq〜mobile_numberptpostcodet638985ttypesrjava.lang.Integer⠤8Ivaluexq〜tprioritysq〜9tsourcetSINGPOSTt source_idsq〜?xxtchanneltIGG,火狐( 40)在Mac OS X(桌面),6bfda0b,2015-08-17 12:0 8:35 +0800temailtbaskaran+0022@redmart.comt first_nameq~tidsq~? t in_groupssq~ wsq~?@ w?tidq~ wxtpasswordt#b68f58941b89d64d33f522c7d83d7031:3utpostcodet638985t?referral_tokentbaskaran0022118508tstatussq~9?tintercomt@e610edfc94b3086dffc8e3fd8709e6e29c2bf9213ec7b83ffd77df40918cc349x 8:35 +0800temailtbaskaran+0022@redmart.comt first_nameq〜tidsq〜牛逼in_groupssq〜WSQ〜沃顿tidq〜wxtpasswordt#b68f58941b89d64d33f522c7d83d7031:?????3utpostcodet638985t referral_tokentbaskaran0022118508tstatussq〜9 tintercomt @ e610edfc94b3086dffc8e3fd8709e6e29c2bf9213ec7b83ffd77df40918cc349x

Any idea? 任何想法?

You need to deserialize it in the normal Java way, getting a Java object (namely a models.mongo.Member ). 您需要以常规Java方式反序列化它,以获取Java对象(即models.mongo.Member )。 Note that for this you'll need the jar file which contains the models.mongo.Member class, preferably the exact same version which was used to serialize the object (otherwise it may not work correctly). 请注意,为此,您需要一个包含models.mongo.Member类的jar文件,最好是用于序列化该对象的完全相同的版本(否则它可能无法正常工作)。 Then convert it to a case class in whatever way you want. 然后以任何所需的方式将其转换为case类。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM