前言:在我们对Json字符串进行处理时,往往会碰到这个问题org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject,解析服务器返回的Json串时,JSONObject对象抛出了这个异常。其实这是返回的Json字符串含有BOM头导致的。


本人手拙,写的不好。望各位大虾见谅!!!


什么是JSON? 

   JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、 Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

什么是bom头?

    在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了。

去掉bom头的办法:

     1、editplus去BOM头的方法
        编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。
        运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,
        然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。

    2、ultraedit去除bom头办法
        打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了


使用JSON也差不多一年了,前前后后也遇到过几次莫名其妙的解析出错!原因就是因为在utf-8中生成的JSON文件带有BOM头

例如下面这张图片的这段JSON

关于JSON解析的深坑之BOM头_BOM头

    本人菜鸟一枚,望各位大虾轻噴~谢谢各位!!!

原文链接:http://www.echohoo.com/?post=515