有关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鼠标左右键 键盘值小结
Jun 11 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
jQuery平滑旋转幻灯片特效代码分享
Sep 07 Javascript
基于jQuery实现搜索关键字自动匹配功能
Mar 26 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
详解javascript跨浏览器事件处理程序
Mar 27 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
原生js编写基于面向对象的分页组件
Dec 05 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
Vue 表单控件绑定的实现示例
Aug 11 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 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 危险函数解释 分析
2009/04/22 PHP
PHP Socket 编程
2010/04/09 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
python实现决策树
2017/12/21 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
优秀民警事迹材料
2014/01/29 职场文书
公司面试感谢信
2014/02/01 职场文书
小学生优秀评语大全
2014/04/22 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
蓬莱阁导游词
2015/02/04 职场文书
实习生个人总结范文
2015/02/28 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers