weex 问题处理: Android 处理 json 对象中属性值为 null

昨天在weex项目中发现一个异常,只在android中出现,经调试发现异常出现在js代码中, 如下位置,confirm属性address notfound,confirm值显示为undefined

js获取到数据结构如下


接口获取数据结构如下

对比发现js取到的数据缺少address属性,已知js数据由android端获取,应该是android端对数据做了处理,跟踪发现数据改变位置如下


查询发现原因是com.alibaba.fastjson JSON.toJSONString(obj)后默认去掉了值为null的属性。

解决方法(供参考)

1.将JSON.toJSONString(obj)改为JSON.toJSONString(obj,SerializerFeature.WriteMapNullValue)

SerializerFeature可选值如下:

QuoteFieldNames———-输出key时是否使用双引号,默认为true

WriteMapNullValue——–是否输出值为null的字段,默认为false

WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null

WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null

WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null

WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null

由于fromObjectToJSONString在weexsdk内多个地方有调用,没有一一去查看,可能导致一些地方没有判空问题,另外,做此处理后,前端js中取值的地方更易出现值为null的情况,对此需注意相关代码判空,等尽量书写规范。

2.weex原项目中有此问题issues

https://github.com/alibaba/weex/issues/1133

此issues已close,现weex项目已搬迁,建议查看weex官方处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,750评论 0 15
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,036评论 18 399
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 8,949评论 1 19
  • 初次遇见长江的桥,正如不识庐山真面只缘身在此山中的朦胧。我坐着583路,从桥南驶入这条桥,总觉得用桥这个字有点低看...
    木樨香如故阅读 4,204评论 9 6
  • 6月18日 1、财富播种恩田、敬田、悲田√ 2、接受师兄的邀请留下来聊天,种下陪伴和关爱的种子 3、给老妈打电话安...
    鹊曾阅读 1,189评论 0 1