序列化还是JSON

    最近在做原生Android应用,有一个功能是在APP中把需要的数据导出(放在sdcard上),然后在Web端将该文件上传管理。当时想到的解决方案有两个,一个是将对象序列化,另一个就是存成JSON格式。因为正好最近看到了序列化,就打算先试试序列化方案。大概序列化的方法可以参考下面链接:

https://www.cnblogs.com/xdp-gacl/p/3777987.html

文章写得比较详细,然后在本机上做了单元测试可以走通,周五的时候就提交代码美滋滋地回去了。

周一同事跟我反馈,在Web端进行文件的反序列化失败了,报错ClassNotFoundException ,原因是因为两个实体类的包路径不同。

这就超出我的知识范围了,赶紧回头找解决方案。

上网查了下,序列化和反序列化的时候有两个基本支撑点,即

1.包名相同

2.serialVersionUID。

因为APP和Web端分别是两个项目,不能让包名相同,上网找解决办法未果,只能改用转JSON的方式:

用的是jackson-mapper-1.9.5.jar这个包

MAPPER.writeValueAsString()方法直接将对象转成JSON,然后放到文件里。

在序列化的时候有个特殊类型的字段(Geometry),直接将其序列化并不会生成自己想要的东西,所以这里做了一部处理,先将其转成String类型再放到文件里:

用的包是arcgis-android-api.jar

String fg = GeometryEngine.geometryToJson(SpatialReference.create(SpatialReference.WKID_WGS84), result.getFeatureGeometry());

反序列化时,有个字段是byte字段需要做特殊处理:

byte[] jsonToByte =  java.util.Base64.getMimeDecoder().decode(byteString);
String url = new String(jsonToByte );

这里采用的是java工具包里的方法,如果你的项目引入了alibaba的包或Apache的包,里面也会有类似的功能。

至此,该功能算是能够交差了,算是给自己知识查缺补漏了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值