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)
上一篇 2022年7月17日 下午5:36
下一篇 2022年7月17日 下午5:46


相关推荐

  • pycharm安装教程,超详细

    pycharm安装教程,超详细在安装 pycharm 之前 确保你的电脑配置好了 python 没有下载安装的可以去看我的文章 gt gt gt python 安装详细教程 pycharmwindo 版本下载地址 https www jetbrains com pycharm download section windows 下载社区版本 日常学习使用够用了 专业版是收费的哦 功能更强大 下载完后打开安装程序 点击 next 选择一个路径然后 next 把这些选项都勾选上 点击 Install 安装完后点击 Finish

    2026年3月27日
    2
  • graph representation learning_with for什么意思

    graph representation learning_with for什么意思刷新三数据集纪录的跨镜追踪(行人再识别-ReID)技术云从科技在跨镜追踪(行人再识别)技术(ReID)上获取重大突破。同时在Market-1501,CUHK03,DukeMTMC-reID三个数据集刷新了世界纪录,其中最高在Market-1501上的首位命中率(Rank-1Accuracy)达到96.6%,让跨镜追踪(ReID)在准确率上首次达到商用水平,人工智能即将从「刷脸」跨到「识人」的新纪…

    2022年10月6日
    4
  • L2正则化的作用(l1正则化特点)

    0正则化的作用正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归。但是使用正则化来防止过拟合的原理是什么?L1和L…

    2022年4月11日
    91
  • 动车上的书摘-java对象流与序列化

    动车上的书摘-java对象流与序列化

    2021年9月14日
    46
  • 5G时代,与IMSI安全的梗概「建议收藏」

    5G时代,与IMSI安全的梗概「建议收藏」5G时代,IMSI是如何应对加密的?

    2025年6月3日
    4
  • 信息搜集 – 二层发现 arping[通俗易懂]

    信息搜集 – 二层发现 arping[通俗易懂]0x00:简介在被动信息搜集工作完成后,需要在进一步的对目标进行主动信息搜集,这一阶段主要搜索的信息包括目标主机是否存活,上面开放了哪些端口,有哪些服务,服务系统是什么,开发服务的版本以及上面支撑系统运行的一些中间件或者其他软件的版本(后续可根据版本号查看是否有公开的漏洞问题),在目标主机发现的过程中,不仅要发现目标是否存活,还要发现其整个网段下的其他设备,同时,这些其他设备也应该像目标一样搜…

    2022年5月30日
    41

发表回复

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

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