有关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 相关文章推荐
javascript[js]获取url参数的代码
Oct 17 Javascript
setInterval,setTimeout与jquery混用的问题
Apr 08 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
js实现创建删除html元素小结
Sep 30 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
Oct 09 Javascript
Bootstrap基本插件学习笔记之按钮(21)
Dec 08 Javascript
javascript实现的图片预览功能
Mar 25 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
layui使用form表单实现post请求页面跳转的方法
Sep 14 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 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
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php检查页面是否被百度收录
2015/10/28 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python+pyqt实现右下角弹出框
2017/10/26 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
python中图像通道分离与合并实例
2020/01/17 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
介绍一下mysql的日期和时间函数
2013/03/28 面试题
大专计算机个人求职的自我评价
2013/10/21 职场文书
外贸实习生自荐信范文
2013/11/24 职场文书
公司道歉信范文
2014/01/09 职场文书
大学生军训感想
2014/02/16 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
乳制品整治工作方案
2014/05/29 职场文书
2015年春节标语口号
2014/12/09 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers
Python实现双向链表基本操作
2022/05/25 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python