有关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 相关文章推荐
JQuery下关于$.Ready()的分析
Dec 13 Javascript
html a标签-超链接中confirm方法使用介绍
Jan 04 Javascript
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
使用typeof判断function是否存在于上下文
Aug 14 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
Dec 17 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
Jan 31 Javascript
JS动态日期时间的获取方法
Sep 28 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
jquery+css实现动感的图片切换效果
Nov 25 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
vue新建项目并配置标准路由过程解析
Dec 09 Javascript
vue 重塑数组之修改数组指定index的值操作
Aug 09 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 深入理解strtotime函数的使用详解
2013/05/23 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python 常用string函数详解
2016/05/30 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
python语言中有算法吗
2020/06/16 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
Python通过字典映射函数实现switch
2020/11/06 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
华为python面试题
2016/05/03 面试题
农村党支部先进事迹
2014/01/14 职场文书
安全生产演讲稿
2014/05/09 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
分享几个简单MySQL优化小妙招
2022/03/31 MySQL
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python