有关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 相关文章推荐
setTimeout和setInterval的深入理解
Nov 08 Javascript
Jquery对数组的操作技巧整理
Mar 25 Javascript
JS中怎样判断undefined(比较不错的方法)
Mar 27 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
JavaScript中String对象的方法介绍
Jan 04 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
JavaScript闭包原理与用法实例分析
Aug 10 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
Vue 中 filter 与 computed 的区别与用法解析
Nov 21 Javascript
微信小程序 自定义弹窗实现过程(附代码)
Dec 05 Javascript
Vant 中的Toast设置全局的延迟时间操作
Nov 04 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中使用break跳出多重循环代码实例
2015/01/21 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
jsonp原理及使用
2013/10/28 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
Python Grid使用和布局详解
2018/06/30 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
django的settings中设置中文支持的实现
2019/04/28 Python
Apache部署Django项目图文详解
2019/07/30 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
高中生学习的自我评价
2013/12/14 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
Go各时间字符串使用解析
2021/04/02 Golang
深度学习小工程练习之垃圾分类详解
2021/04/14 Python