有关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 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
jquery清空textarea等输入框实现代码
Apr 22 Javascript
JS获取url链接字符串 location.href
Dec 23 Javascript
BootStrap glyphicons 字体图标实现方法
May 01 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
Apr 10 Javascript
源码分析Vue.js的监听实现教程
Apr 23 Javascript
一文快速了解JQuery中的AJAX
May 31 jQuery
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
Nov 19 Javascript
jQuery实现推拉门效果
Oct 19 jQuery
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
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
Python外星人入侵游戏编程完整版
2020/03/30 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python实现简单名片管理系统
2018/11/30 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python实现广度优先搜索过程解析
2019/10/19 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Linux文件系统类型
2012/09/16 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
大学生志愿者感言
2014/01/15 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
企业宗旨标语
2014/06/10 职场文书
节约用水标语
2014/06/11 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
导游词之神仙居景区
2019/11/15 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
Python读写yaml文件
2022/03/20 Python
vue实现登陆页面开发实践
2022/05/30 Vue.js