与后台的交互过程,往往是一个app的核心,在flutter中遇到不少小坑,希望可以帮助小白解决日常问题。
日常上代码:
一、
一般来说,后台都会是这种返回方式,即通过produces设定为json的方式返回给前台一个json,于是flutter的前台解析方式如下:
这里是用自己写的json转类的方法,具体可以百度flutter将json转类的方法。
二、
了解一下后台就知道,produces还可以设置成text/html
这种写法的话,用flutter的debugPrint打印出来的东西和json是一样一样的,这就是本小白遇到的问题了。其实,在做app的网络交互前,建议先用postman将返回的结果进行解析
这里的json,就是后台默认返回到前台的格式了,
可以看到,返回的也可以是Text,如果返回结果是text格式的,需要加一步处理
dart:convert包下的一个json.decode方法将json数组转成map,然后再进行解析,当然,如果你在fromJson中,自己定义了从json转成对象的方法的话, 不过相对麻烦而已。(因为类包含其他类的话,还要自己定义包含的其他对象的解析方法)
三、
剩下最后一个是在使用websocket时遇到的,
笔者之前是没有JSONObject进行对象的包装的,直接通过gson进行序列化然后socket进行send,于是搞出来一大堆问题, 从flutter的debugprint中也是看不出来的,直到了解了send的发送方式后,才发现直接send后,会变成一个字符串,即A -> "A",而引号在debugprint中是不会显示的(→_→)
对于这种情况,可以用substring方法将两遍的引号去掉,然后再json.decode并且fromJson进行解析,也可以像笔者一样,用JSONObject进行包装,然后就省略掉substring这一步。
以上,
如有不对,还望读者不吝赐教