java json decode 中文_关于json_decode乱码及NULL的解决方法「建议收藏」

java json decode 中文_关于json_decode乱码及NULL的解决方法「建议收藏」写接口的同学应该会经常遇到数据格式的转换,这时候必不可少的两个函数就是json_encode()和json_decode()。这两个函数使用的时候有很多的主要事项,在这里我来说一下json_decode()。json_decode():对JSON格式的字符串进行解码,接受一个JSON格式的字符串并且把它转换为PHP变量。(1)将数据转换成数组之后,打印会显示NUll:原因之一json_dec…

大家好,又见面了,我是你们的朋友全栈君。

写接口的同学应该会经常遇到数据格式的转换,这时候必不可少的两个函数就是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格式,则不用此步骤,否则还会出现乱码

注意:使用iconv函数并不是php自带的,需要可以修改php.ini文件,将extension=php_iconv.dll前的”;”去掉,同时你要copy你的原php安装文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是这个目录)。(有可能是php的安装文件???)

原因之二: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

$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));

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160643.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python中的输出「建议收藏」

    Python中的输出「建议收藏」1.Python的输出语句Python输出语句是print,但是python2.x与3.x又有点区别。python2.x输出print"xxx"能成功执行,而3.x不行,所以

    2022年7月5日
    24
  • 软件测试前景和发展方向

    软件测试前景和发展方向2019最热门的软件测试趋势毛哥(译)放眼全球,了解技术发展的边界和趋势,有助于组织和个人的发展及竞争力的提升,偶尔看到国外某网站的一篇文章,读来颇值得参考,简单翻译过来,分享一下。也许这篇文章会给你一份指南,让你快速成长与发展。如今,随着世界数字化,我们目睹了技术进步的巨大变化。2019年也将标志着技术和数字化转型的巨大变化,从而要求组织不断创新和重塑自我。#1)敏捷与D…

    2022年4月28日
    71
  • FlashFXP v3.5.4注册码+FlashFXP v3.6.0注册码+FlashFXP v3.7.2.build.1266…[通俗易懂]

    FlashFXP v3.5.4注册码+FlashFXP v3.6.0注册码+FlashFXP v3.7.2.build.1266…[通俗易懂]
    FlashFXP是功能强大的FXP/FTP软件,融合了一些其他优秀FTP软件的优点,如像CuteFTP一样可以比较文件夹,支持彩色文字显示;像BpFTP支持多文件夹选择文件,能够缓存文件夹;像LeapFTP一样的外观界面,甚至设计思路也差相仿佛。支持文件夹(带子文件夹)的文件传送、删除;支持上传、下载及第三方文件续传;可以跳过指定的文件类型,只传送需要的文件;可以自定义不同文件类型的显示颜色;可以缓存远端文件夹列表,支持FTP代理及Socks4&5;具有避免空闲功

    2022年7月26日
    9
  • 如何区别标准POE交换机和非标POE交换机[通俗易懂]

    如何区别标准POE交换机和非标POE交换机[通俗易懂]通俗的说,POE交换机就是支持网线供电的交换机,其不但可以实现普通交换机的数据传输功能还能同时对网络终端进行供电。那么,我们该如何来区别如何区别标准POE交换机和非标POE交换机呢?接下来我们就跟随飞畅科技的小编一起来详细看看吧!一、什么是POE交换机PoE供电交换机是指能够通过网线为远端受电终端提供网络供电的交换机,包含网络交换机和PoE供电两个功能,是PoE供电系统中比较常见的供电设备。二、POE交换机的分类1、标准POE交换机符合IEEE802.3af、802.3at标准,就是标准P..

    2022年10月4日
    7
  • NoSQL数据库的五种分类

    NoSQL数据库的五种分类NoSQL 数据库分为五种 键值数据库 文档数据库 列式数据库 图数据库 全文搜索引擎数据库

    2025年9月12日
    2
  • 深入理解适配器设计模式(java版本)

    深入理解适配器设计模式(java版本)

    2021年8月3日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号