去年开发了一个便签的app。然后一直在不定期迭代。
大体来说,就是将用户输入存到db中,后续可以解析db,将数据二次展示
- 当时是在存db之前,先将数据转成json格式了。
至于为何要将数据转成json格式,一时不好解释,需要一些上下文,这里不做解释。
- 当时是在存db之前,先将数据转成json格式了。
然而问题出现了,之前一直没有发现的一个问题。就是如果用户输入的数据中包含双引号
""
这样的东西,就会导致解析失败。程序直接崩溃了。原因很简单,比如下面这条数据:{"xxx":"5oiR5piv5YaF5a655ZCX77yf5piv55qE5ZGA77yM5bm25LiU5oiR6KKr5pu05paw5LqG5"ZOm "}
就是因为中间多了一个
"
导致json格式被破坏,后续进行json解析就会崩溃的。- 解决方案就是:
- 存储的时候将数据进行base64/urlEncoder转码
- 解析的时候再次进行转码
这样就解决了这种json格式被破坏的问题了。
当然,这样解决还是会引发一个新的问题,就是向后兼容的问题:之前的数据并没有进行转码,而新的数据进行了转码。在读取的时候,需要区分新数据和之前的数据。否则会导致之前的数据在打开展示的时候,显示为乱码(base64#encode之后的一长串字母)。
- 这个问题的解决方案就是:
- 在解析的时候判断当前这条数据的存储时间,如果存储时间为软件升级之前的。就不进行转码,否则进行转码。
- 解决方案就是: