空格、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’:
空格、NBSP 造成的 JSON 解析失败问题相关推荐
- [js] 处理字符串换行造成的json解析失败
需求:从数据库某个字段取出字符串出来,转为json,结果发现报错为 解析失败,发现是因为取出的字符串换行导致,现在需要将字符串里面的换行替换为'',使字符串可依成功解析成json对象. 技术:依靠re ...
- python post json 解析失败_python中json对象转换出错解决方法
今天在使用python中的json转换碰到一个问题: 接收一个post的json字符串: s={"username":"admin","passwor ...
- python post json 解析失败_python – Flask RESTful POST JSON失败
我有一个问题,通过curl从cmd( Windows7)发布 JSON到Flask RESTful. 这就是我发布的内容: curl.exe -i -H "Content-Type: app ...
- 【解决】json字符串解析失败json.decoder.JSONDecodeError
解决json解析失败报错:json.decoder.JSONDecodeError 最近遇到一个json字符串解析失败的问题,原因是json里面的":这个两个符合和一些特殊符号在搞鬼,报错如 ...
- 谷歌的json解析器Gson在Android/Java中的常用工具类
gson解析器,可实现子类和json字符串之间互转 package com.hulk.ues.core;import android.text.TextUtils; import android.ut ...
- JavaScript JSON解析
最近在uniapp中遇到了一个bug,排查后是json解析的问题.对uniapp开发比较熟悉的,应该会知道uni.navigateTo 这个API方法.这是官方提供用于跳转页面的方法. 有时候我们在跳 ...
- pythonjson数据解析失败_json解析失败是什么意思
因为代码的不美观等因素,我们会使用一些解析工具进行处理,有些人在解析时出现了报错.解析失败需要考虑多方面的因素,如格式.String类型.boolean类型等原因,在格式上分为格式错误和格式正确两种讨 ...
- android 生成泛型对象,java android解析多层含有泛型对象的json数据获取不到泛型类型解析失败解决办法...
####问题描述 * java 解析多层含有泛型对象的json数据获取不到泛型类型 * 如果将泛型改成实际的类型就能正常解析 * 如果不改成实际的类型泛型数据被解析成com.google.gson.i ...
- android json解析异常,json数据解析异常而导致网络请求失败的解决办法(其一)
问题概述 笔者在开发过程中临时遇到一个本来仅有web端的项目临时增加Android端,导致后端在出接口时并未考虑Android端的json数据的解析,导致接口是这样的.... 正确请求 { " ...
- cJSON_译(C中的超轻量级JSON解析器)
cJSON ANSI C中的超轻量级JSON解析器. 通行证 执照 版权所有(c)2009-2017 Dave Gamble和cJSON贡献者 特此免费授予获得此软件和相关文档文件("软件& ...
最新文章
- ESTL:新型多重扩增子测序法可实现污水中 SARS-CoV-2 RNA 的精确定量和病毒溯源...
- 存储的学习:freenas使用记录
- 《精通Python设计模式》学习结构型之享元模式
- php-cgi 68%,php cgi 进程占用太多怎么办
- linux 7 services设定,CENTOS/RHEL7系统中设置SYSTEMD SERVICE的ULIMIT资源限制
- 如何管理kvm虚拟机的时钟源
- Spring Boot细节挖掘(Redis的集成)
- 读书笔记_量化交易如何建立自己的算法交易01
- 使用WCF实现消息推送
- php null空值(转)
- 第五章 线性回归 学习笔记下
- (十)瑞芯微rk3568 中qt工程ffmpeg 拉取rtsp视频流
- 微信小程序关于map地图
- UART串口通信协议详解
- html中class类怎么写,HTML class 属性 | 菜鸟教程
- -webkit-background-clip属性不生效问题
- TSC条码打印机 条形码ActiveXbarcode()方法参数详解
- Redis-Java客户端
- Springboot启动报错[ main] o.s.boot.SpringApplication: Application run failed
- idea2021版本添加上一步和下一步操作到工具栏