有关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 相关文章推荐
070823更新的一个[消息提示框]组件 兼容ie7
Aug 29 Javascript
JavaScript 字符串乘法
Aug 20 Javascript
Js event事件在IE、FF兼容性问题
Jan 01 Javascript
仿猪八戒网左下角的文字滚动效果
Oct 28 Javascript
AngularJS学习笔记之ng-options指令
Jun 16 Javascript
微信小程序 icon组件详细及实例代码
Oct 25 Javascript
jQuery实现自动调用和触发某个事件的方法
Nov 18 Javascript
ajax接收后台数据在html页面显示
Feb 19 Javascript
JavaScript正则表达式简单实用实例
Jun 23 Javascript
js定时器实现倒计时效果
Nov 05 Javascript
Vue2.0 实现单选互斥的方法
Apr 13 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 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
destoon整合UCenter图文教程
2014/06/21 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
php查询内存信息操作示例
2019/05/09 PHP
javascript知识点收藏
2007/02/22 Javascript
简单的JS多重继承示例
2008/03/13 Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
python列表list保留顺序去重的实例
2018/12/14 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
linux安装python修改默认python版本方法
2019/03/31 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
商务日语专业毕业生自荐信
2014/03/27 职场文书
遗产继承公证书
2014/04/09 职场文书
企业安全生产责任书
2014/04/14 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
以权谋私检举信范文
2015/03/02 职场文书
出纳试用期自我评价
2015/03/10 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
活着观后感
2015/06/03 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python