有关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 相关文章推荐
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
Jun 21 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
手把手搭建安装基于windows的Vue.js运行环境
Jun 12 Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
javascript简单实现深浅拷贝过程详解
Oct 08 Javascript
微信小程序实现天气预报功能(附源码)
Dec 10 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php正则表达式学习笔记
2015/11/13 PHP
php时间函数用法分析
2016/05/28 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Python验证企业工商注册码
2015/10/25 Python
基于python实现百度翻译功能
2019/05/09 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
jupyter notebook实现显示行号
2020/04/13 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
智能钱包:Ekster
2019/11/21 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
九年级历史教学反思
2014/01/27 职场文书
商场端午节活动方案
2014/01/29 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
CentOS MySql8 远程连接实战
2022/04/19 MySQL