有关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上传图片前的限制包括(jpg jpg gif及大小高宽)等
Dec 19 Javascript
JS循环遍历JSON数据的方法
Jul 08 Javascript
js判断某个方法是否存在实例代码
Jan 10 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
Apr 20 Javascript
深入学习JavaScript中的原型prototype
Aug 13 Javascript
JavaScript动态创建div等元素实例讲解
Jan 06 Javascript
AngularJS自动表单验证
Feb 01 Javascript
node结合swig渲染摸板的方法
Apr 11 Javascript
vue.js template模板的使用(仿饿了么布局)
Aug 13 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
Aug 22 Javascript
vue打包相关细节整理(小结)
Sep 28 Javascript
小程序云开发实战小结
Oct 25 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
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
js微信分享实现代码
2020/10/11 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
JS实现多功能计算器
2020/10/28 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python脚本暴力破解栅栏密码
2015/10/19 Python
Python正则表达式完全指南
2017/05/25 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
django 类视图的使用方法详解
2019/07/24 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
给领导的检讨书
2014/02/16 职场文书
人事部经理岗位职责
2014/03/07 职场文书
政协调研汇报材料
2014/08/15 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
观看建国大业观后感
2015/06/01 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python