有关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 相关文章推荐
node.js不得不说的12点内容
Jul 14 Javascript
js中使用replace方法完成某个字符的转换
Aug 20 Javascript
JS模拟实现Select效果代码
Sep 24 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
Jan 04 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
微信小程序 less文件编译成wxss文件实现办法
Dec 05 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
Node.js中的http请求客户端示例(request client)
May 04 Javascript
Vue实现按钮旋转和移动位置的实例代码
Aug 09 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
使用JavaScript保存文本文件到本地的两种方法
Jan 22 Javascript
小程序多图列表实现性能优化的方法步骤
May 28 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
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
jquery tab标签页的制作
2010/05/10 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
python中sleep函数用法实例分析
2015/04/29 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
有关Python的22个编程技巧
2018/08/29 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
2014年教师节寄语
2014/04/03 职场文书
总账会计岗位职责
2015/04/02 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL