有关json_decode乱码及NULL的问题


Posted in Javascript onOctober 13, 2015

具体内容请看下文吧。

写接口的同学应该会经常遇到数据格式的转换,这时候必不可少的两个函数就是json_encode()和json_decode()。

这两个函数使用的时候有很多的主要事项,在这里我来说一下json_decode()。

json_decode(): 对JSON 格式的字符串进行解码,接受一个JSON 格式的字符串并且把它转换为 PHP 变量。

(1)将数据转换成数组之后,打印会显示NUll:

原因之一json_decode只支持utf-8.

iconv('gbk','utf-8', $result_string);用iconv函数将写入数据的gbk编码格式转换为要输出的utf-8编码格式,若原本的数据是utf-8格式,则不用此步骤,否则还会出现乱码

原因之二:json字符串必须以双引号包含

str_replace("'", '"', $result_string);//将json数据中的单引替换成双引

原因之三:不能有多余的逗号 如:[1,2,]

用正则替换掉,preg_replace('/,\s*([\]}])/m', '$1', $result_string);

(2)将数据转换成数组或者在转换成json格式数据之后,会显示乱码:

这时候要用到urlencode()和urldecode()

以下是我的代码,经试验有效

if(file_exists($result['save_path'])){
  $contents=file_get_contents($result['save_path']);//将一个文件的内容写入,文件是utf-8格式,里面是json格式的数据
  //$getcontent = iconv("gbk", "utf-8//ignore",$contents);//若文件原本是utf-8格式,无需转换
  $getcontent=str_replace("'", '"',$contents);//将单引替换成双引
  preg_replace('/,\s*([\]}])/m', '$1', $getcontent);//去掉多余的逗号
  $new_array=array();
  $new_array=json_decode($getcontent,true);
  $res=array();
  foreach ($new_array as $key=>$val){
   foreach ($new_array[$key]['items'] as $k=>$v){
    if($k<$row){
     $res[$k]['position']=$v['position'];
     $res[$k]['distance']=$v['distance'];
     $res[$k]['title']=urlencode($v['title']);
     $res[$k['vicinity']=urlencode($v['vicinity']);
    }
   }
  }
 if($res){
 $new_res['items']=$res;
 }else{
 $new_res['items']="";
 }
 echo urldecode(json_encode($new_res));
}

以上内容是小编给大家分享的有关json_decode乱码及NULL的问题,希望对大家有所帮助。

Javascript 相关文章推荐
js压缩利器
Feb 20 Javascript
大家未必知道的Js技巧收藏
Apr 07 Javascript
用于判断用户注册时,密码强度的JS代码
Jan 01 Javascript
javascript中的变量作用域以及变量提升详细介绍
Oct 24 Javascript
jquery禁止回车触发表单提交
Dec 12 Javascript
js获取会话框prompt的返回值的方法
Jan 10 Javascript
js实现延时加载Flash的方法
Nov 26 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
浅谈vue项目用到的mock数据接口的两种方式
Oct 09 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
Ajax实现页面无刷新留言效果
Mar 24 Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 #Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 #Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
Oct 13 #Javascript
JS实现的简洁二级导航菜单雏形效果
Oct 13 #Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
Oct 13 #Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 #Javascript
编写高性能Javascript代码的N条建议
Oct 12 #Javascript
You might like
oracle资料库函式库
2006/10/09 PHP
php部分常见问题总结
2008/03/27 PHP
php上传文件的增强函数
2010/07/21 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
JavaScript小技巧 2.5 则
2010/09/12 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
turn.js异步加载实现翻书效果
2019/07/25 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
Python对切片命名的实现方法
2018/10/16 Python
使用Python进行目录的对比方法
2018/11/01 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
大学在校生求职信范文
2013/11/21 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
高中生物教学反思
2014/02/05 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
英语感谢信范文
2015/01/20 职场文书
会计出纳岗位职责
2015/03/31 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python