ysmintor / Retrofit2RxjavaDemo

Retrofit2 with Rxjava[1], retreive data with non resutful data and get real data
Apache License 2.0
44 stars 8 forks source link

json获取 #3

Closed yishangfei closed 7 years ago

yishangfei commented 7 years ago
{"MSG":"获取成功","status":"0","saleList":[{"saleCardId":"","saleDingdanId":1993,"saleGoodsBianhao":"wwx0001","saleGuige":"根","saleId":2469,"saleImgSrc":"upload\/mall\/img\/201608\/20160824175621121.png;","saleJinhuojia":"0.01","saleNum":1,"saleOneRmb":0.01,"saleOrderBianhao":"6210163623539132","saleOrderState":"待收货","saleProject":"321","saleShangpName":"牙签(测试专用)","saleShangpNum":716,"saleTime":"2017-01-22 15:17:38","saleTotalRmb":0.01,"saleUseTime":"","xnName":""}],"row":[{"dingdanArrivedTime":"","dingdanBeiyong1":"微信支付","dingdanBeiyong2":"0","dingdanBeiyong3":"","dingdanBeiyong4":"","dingdanBeiyong5":"易上飞","dingdanBeiyong6":"无需退款","dingdanBianhao":"6210163623539132","dingdanDajianpeisong":0,"dingdanDizhi":"凯姆国际1栋3单元301","dingdanGoodsnum":1,"dingdanId":1993,"dingdanImgSrc":"upload\/mall\/img\/201608\/20160824175621121.png;","dingdanName":"肖岚","dingdanOverTime":"","dingdanPaisongtime":"2017-02-23 15:14:33","dingdanPayJiaoyihao":"1485069457844","dingdanPayOrderhao":"","dingdanPayTime":"2017-01-22 15:17:51","dingdanPeisongfei":1.0,"dingdanPeisongrenid":78,"dingdanShouliren":"wwx","dingdanTel":"14527319913","dingdanTotalRmb":1.01,"dingdanUserId":1962,"dingdanUserName":"14527319913","dingdanVillage":"321","dingdanXiadanTime":"2017-01-22 15:17:38","dingdanYouhuijia":"","dingdanYouhuiquanId":0,"dingdanZhuangtai":"待收货","xnName":""}]}

这个里面有一个saleList 和row 单独获取一个的值是可以的 问一下怎么可以拿到两个的值

ysmintor commented 7 years ago

你指的单独获取是一次取一个吗?拿两个是指同意拿两个呢还是说比如在saleList里取两个元素,若是如此的话,返回的json里只有单个元素,并没有2个元素啊。

另外RxJava2了解了下,和RxJava并不冲突,而且相关支持比如说RxView好像还没有支持,你可以先学习好RxJava1用于生产环境是没有问题的。有问题继续。

yishangfei commented 7 years ago

image 我的意思是 我现在的json里面有两个list 分别是saleList 和row这两个
image 这里的return什么才能在我的activity里面获取到两个list的值 如果你还是没懂我说的什么的话 可不可以加一下qq沟通 这个沟通贼慢~

ysmintor commented 7 years ago

不好意思,周末没来看问题。 明白你说的是什么了。

原因

一般来说这个可以和后台约定的,你这种形式已经不适用了这种处理,尽量把其它的结果放在result里,这可以说和后台商量。

解决办法

  1. 可以不使用这处处理方式,直接使用更外层的个Json,即{state:xx, MSG: xxx; stateList:xx, row:xxx},然后先判断写在Worker线程中比较好。
  2. 如果你后台接口比较固定于这种形式,可以使用一个zip函数把你要取的数据合并在一个result里,再return 这个合并的实体即可,不过在写对应Retrofit接口时定义的HttpResult这里T要指定这个合并的实体。
ysmintor commented 7 years ago

联系后已经解决。各种各样的服务端返回形式,处理起来还是相对麻烦,我这处处理方式有一定的局限性,最好是要提前和服务端商量好形式处理数据。