首先,楼主在写接口的时候,是用laravel查询数据库,然后对返回的结果进行:json_decode(json_encode($ret),true),,本以为能顺利的转化为json字符串输出的,结果却发现结果为null,因此记录一下。

一、json_decode($str,true)的结果为null

1、原因:
(1)$str只能UTF-8编码

(2)元素最后不能有逗号(与php的array不同)

(3)元素不能使用单引号

(4)元素值中间不能有空格和n,必须替换

2、解决方案:

$data = stripslashes(html_entity_decode($info));
//$info是传递过来的json字符串
$data = json_decode($data,TRUE);
//这时候$data就是解析后的数组了!
//html_entity_decode() 函数的作用是把 HTML 实体转换为字符。
//stripslashes() 函数的作用是删除反斜杠。

二、js_encode的结果为false

1、是的,在我排除json_decode为null的问题之后,我发现我的json_encode的结果竟然为false,很无奈,百度了一下,人家说主要原因就是字符格式的问题。php的json_encode($str)里面的str只能是UTF-8格式的。

2、解决方案:

function array_iconv($in_charset,$out_charset,$arr){  return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));
} 

网上找的代码是这个,但需要因大家的实际业务来写,比如我的$arr是个数组对象,而且用eval之后一直报错,所以我就直接改了下:

 $ret =iconv('GBK','UTF-8//IGNORE',var_export($arr,true));return MyResponse::success(json_decode(json_encode($ret),true),200);

这样就OK了,成功的输出了json字符串

三、遇到的问题:

1、PHP的iconv()函数遇到的错误: Detected an illegal character in input string …

原因:你要转换的数组中含有iconv()函数不认识的字符,可能是繁体字,也可能是反斜杠等。
      解决方案:
(1) 扩大输出字符编码的范围,如把GBK2312改为GBK.
(2) 在输出的字符编码字符串后面加上”//IGNORE”,如iconv(‘GBK’,’UTF-8//IGNORE’,var_export($arr,true)),这样做其实是忽略了不能转换的字符,避免了出错但却不能够正确地输出(即空白不、输出)。

2、 eval()’d code line 3:

解决方案:
(1)查看你的代码,要知道eval()里面输出的必须是符合php规范的,也就是逗号,分号,一个都不能少
(2)注意有没有漏掉反斜杠,如:
eval("if ($strif) {\$ifFlag=true;}else{\$ifFlag=false;}");
eval("if  (\$strif) {\$ifFlag=true;}else{\$ifFlag=false;}");

上面的因为少个反斜杠,所以报错了。。

end

json_decode的结果为null,json_encode的结果为相关推荐

  1. PHP 利用json_decode解析json为null问题解决

    PS:原创文章,如需转载,请注明出处,谢谢! 本文地址:http://flyer0126.iteye.com/blog/2382708 今天遇到json解析问题,PHP利用json_decode解析j ...

  2. json_decode的结果是null

    一.前言 突然发现一个接口出了问题,经过排查之后发现是json_decode($str,true)的问题,返回竟然是null.这个问题大家可能都碰到过,出现问题的原因就那么几种,再次记录一下吧 二.原 ...

  3. php json_decode 效率,浅析PHP中json_encode、json_decode与serialize、unserialize的性能测试...

    今天偶然在想,如果用PHP写一个类似BDB的基于文件的Key-Value小型数据库用于存储非结构化的记录型数据,不知道效率会如何? 于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之 ...

  4. 记录一次json_decode 返回NULL解决过程

    后台返回数据,前端收到数据之后,在调用json_decode 之后,返回null. 用json_last_error() 报错 3 在解码前,对字符串进行处理 $data = preg_replace ...

  5. php encode 数组,PHP中json_encode转换数组时要注意的地方

    一.json_encode() $arr =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($a ...

  6. 在PHP语言中使用JSON

    从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码. 一.json_encode() 该函数主要用来将数组和对象,转换为json格式 ...

  7. php的json格式

    2019独角兽企业重金招聘Python工程师标准>>> 作者: 阮一峰 日期: 2011年1月14日 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它. ...

  8. php 1 2 3 转arry_在PHP语言中使用JSON和将json还原成数组的方法

    在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_deco ...

  9. Linux PHP增加JSON支持及如何使用JSON

    Linux PHP增加JSON支持及如何使用JSON 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它. JSON(JavaScript Object Notation)  ...

最新文章

  1. MATLAB【十四】————遍历三层文件夹操作
  2. struts2 不返回result的做法
  3. python爬虫知识大全_Python爬虫知识点一
  4. java基础代码下载_Java基础(一)(示例代码)
  5. PHP学习之路(二)让我们开始环境搭建(Windows篇)
  6. 预处理指令 #pragma 的使用
  7. tinymce vue 部分工具不显示_工具栏图标未在tinymce(4.0.1)文本编辑器中显示
  8. nginx静态文件服务器_Linux分享文件?快速创建静态文件服务器
  9. python编程(深拷贝和浅拷贝)
  10. 如何避免程序员的大脑超载?
  11. 【C++】反向迭代器(rbegin,rend)(转载)
  12. Amazon 新手要知道 100 个问题
  13. java寻宝题目,寻宝
  14. C++保留两位小数的四种方法
  15. 认识Hive,以及Hive的数据定义与数据操作,hive的数据查询和hive函数
  16. 设计模式学习(八) 模板方法模式
  17. 汇编 - 环境设置(Environment Setup)
  18. 一种网络用户行为日志自动获取方法
  19. dex2jar2.0 工具命令使用 及生成error.zip解决
  20. 个人HTML期末大作业~ 个人网页(HTML+CSS)6页面带下拉特效~简单带表格带设计说明 ~学生网页设计作业源码...

热门文章

  1. error LNK2001: 无法解析的外部符号 “void __cdecl cv::cvtColor
  2. android GLES20 color
  3. pytorch nan解决方法笔记
  4. TorchFusion 是一个深度学习框架,主要用于 AI 系统加速研究和开发
  5. htmlvideoelement js操作
  6. ubuntu16.04 cuda8.0 caffe 编译 error: cublas_v2.h 没有那个文件或目录
  7. c++队列指针 结构体指针
  8. boost库之tcp client 回调不正常
  9. /usr/bin/time -v 显示内容含义
  10. matlab三角形旋转动态,新手向!用WebGL写一个旋转的动态三角形,总共分三步!!(注释超详细!!)...