空格、NBSP 造成的 JSON 解析失败问题 | 您所在的位置:网站首页 › 解析json配置文件失败怎么回事啊 › 空格、NBSP 造成的 JSON 解析失败问题 |
文章目录
一、问题二、空格与 NBSP三、解决
一、问题
今天编辑腾讯文档,加了一个代码块,复制了一段 json 进去,后来产品到该文档里去取这个 json,使用小米推送进行推送,发现推送死活显示不出来,可是之前测试的时候明明是好的,对比了之前的 json 和腾讯文档里的 json,乍看之下没什么区别,研究了很久,才发现问题所在。 就是这两个: 腾讯文档(以下称副本):{ "a":""} txt文件(以下称原件):{ "a": ""} 看起来一模一样,在 sublime Text 中选中它们,就会发现一点异常,一个的空格2个点,一个是4个点: 再看下它们的 unicode 表示: 副本:{ "a":""} \u007b\u00a0\u0020\u00a0\u0020\u0022\u0061\u0022\u003a\u0022\u0022\u007d原件:{ "a":""} \u007b\u0020\u0020\u0020\u0020\u0022\u0061\u0022\u003a\u0022\u0022\u007d为了方便观察,我把它们都列出来: (unicode 对照表可查看这里) 可以看到,它们的区别在于 { 后面的空格,副本 json 是 \u00a0 和 \u0020 交替,原件都是 \u0020。 \u00a0 代表 NBSP,\u0020 代表空格。它们有什么区别呢? 二、空格与 NBSP空格,就是普通的空格。 NBSP,即 Non-breaking space,不间断空格。它是一个连接符,通常用在 Word 中,使多个单词组成的词组不被换行间断,即让这个词组都显示在一行。 如“微信”是一个词组,在 Word 中,可能会出现这样的情形,“微信”被分成了两行,看起来会有一点困扰。 如果给“信”前面加一个 NBSP(通过 ctrl + shift + space 添加),就会变成这样,“微信”都显示在第二行。 三、解决经测试,腾讯文档会把两个空格(即\u0020\u0020),转为一个 NBSP 和一个空格(即\u00a0\u0020)。 怎么解决呢? 可以把 json 复制到 ide 中,ide 的字符串是带样式的,腾讯文档不会修改空格。 如果使用 Sublime Text 的 Pretty JSON 来格式化 JSON 的话,格式化后默认缩进是 2 个空格,这时复制到腾讯文档就会有问题,可以修改一个 Pretty JSON 的配置,改为使用 tab 来缩进,这样复制也不会有问题。 修改方法: 打开 Preferences-Package Settings-Pretty JSON-Settings-Defalut: 将 “indent” 的值改为 ‘\t’: |
CopyRight 2018-2019 实验室设备网 版权所有 |