求大神解释:怎么将fastjson数据解析成自定义对象?详情如下:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求大神解释:怎么将fastjson数据解析成自定义对象?详情如下:相关的知识,希望对你有一定的参考价值。
(原数据也是将自定义对象转为fastjson字符串)TCP协议的服务器端String data1= JSON.toJSONString(gb);out.writeUTF(data1);
收到时用这句:Goods goods=JSON.parseObject(dis.readUTF(),Goods.class);连接没有问题,都能测到字符串长度,但就是卡这里了,构造方法看了也没问题(双方都是相同的类,只有某些数据类型不同(float,double)这似乎没影响)还有什么导致这数据解析不出来的问题么?
Bundle bundle =(Bundle)intent1.getExtras();String uri=bundle.getString("URI");dout.writeUTF(uri);Thread.sleep(2000);
ReadStr(din);
ReadStr方法里的内容
dis是方法的参数Goods goods=JSON.parseObject(dis.readUTF(),Goods.class);
EventBus.getDefault().post(goods);
当然,编辑器有加get/set的功能,全部都勾上了,
追答出错信息是什么,还是说卡死?再贴下完整代码吧,dis是啥?
追问没出错信息,线程到这就停了,dis是输入流实例,
追答请把.readUTF()去掉,只写dis即可
追问parseObject方法第一个参数只能是String,不是输入流实例,所以要用.readUTF(),不然直接报错,TCP需要控制编码格式么(GBK,UTF-8,我知道用HTTP协议通信需要控制,不然就乱码)?如果需要的话要怎么做?
追答初步判断是readUTF阻塞了,和json解析没关系,你可以先read成string再操作,设个断点看看,参考下这个 http://blog.csdn.net/fw0124/article/details/41227543 。而且parseObject是有输入流的方式调用的,参数类型不一样罢了,你可以看下源码
这样是不行的么?Goods goods=JSON.parseObject(dis.readUTF(),Goods.class);服务器传来的就是一个goods对象
以上是关于求大神解释:怎么将fastjson数据解析成自定义对象?详情如下:的主要内容,如果未能解决你的问题,请参考以下文章