【原创】将数据生成json文件下载以及json中文乱码和优化json文件格式的方法
题目有点长长长。。。。。。
就四个问题:
1.如何生成json文件。
2.如何下载json文件。
3.下载的json中文不显示只显示编码。
4.生成的json文件里面数据格式优化。
解决问题:
<?php
$list = $_GET["barcode"];
$filename = $list.".json"; //文件路径 可以绝对路径也可以相对路径
//先判断当前文件是否存在 存在就不需要生成了 这个根据自己需要判断
if(file_exists($filename)){//文件的类型header('Content-type: application/json');//下载显示的名字 header("Content-Disposition: attachment; filename=$list".".json"); readfile("$filename");exit();
}else{if(isset($list)){ //获取数据$dog1=mysqli_query($link,"SELECT * FROM vieple where barcode = '{$list}' ");$cat1=mysqli_fetch_assoc($dog1);if($cat1['health']=="患者"){$dogsa=mysqli_query($link,"SELECT * FROM batch where barcode = '{$list}' ");$cat['satch']=mysqli_fetch_assoc($dogsa); $dogbl=mysqli_query($link,"SELECT * FROM tdjb where id = '{$list}' "); $cat['tdjb']=mysqli_fetch_assoc($dogbl); $dogex=mysqli_query($link,"SELECT * FROM tbxx where id = '{$list}' "); $cat['tblqsxx']=mysqli_fetch_assoc($dogex); $doggr=mysqli_query($link,"SELECT * FROM trxx where id = '{$list}' "); $cat['txx']=mysqli_fetch_assoc($doggr); $dogrx=mysqli_query($link,"SELECT * FROM tqsxx where id = '{$list}' "); $cat['tx']=mysqli_fetch_assoc($dogrx); $dogsh=mysqli_query($link,"SELECT * FROM tb_shys where id = '{$list}' "); $cat['tys']=mysqli_fetch_assoc($dogsh); $dogyj=mysqli_query($link,"SELECT * FROM tsjjbs where id = '{$list}' "); $cat['tb_yjjbs']=mysqli_fetch_assoc($dogyj); $dogre=mysqli_query($link,"SELECT * FROM reult where baode = '{$list}' "); $cat['repot']=mysqli_fetch_assoc($dogre); $dogpo=mysqli_query($link,"SELECT * FROM reation where baode = '{$list}' "); $cat['repoation']=mysqli_fetch_assoc($dogpo); }else{$dogsa=mysqli_query($link,"SELECT * FROM saebatch where baode = '{$list}' ");$cat['samtch']=mysqli_fetch_assoc($dogsa);$dogall=mysqli_query($link,"SELECT * FROM viewth where baode = '{$list}' ");$cat['viewalth']=mysqli_fetch_assoc($dogall);$dogre=mysqli_query($link,"SELECT * FROM repesult where baode = '{$list}' "); $cat['relt']=mysqli_fetch_assoc($dogre);$dogpo=mysqli_query($link,"SELECT * FROM repotion where baode = '{$list}' "); while($as=mysqli_fetch_assoc($dogpo)){$cat['reption'][]=$as;}//备注 这个部分是给json里面数据字段加备注解释的 我为了方便直接赋值给$cat['beizhu'] 我做处理了 只放了一小部分$cat['beizhu']=array("sach"=>array("samh" => "","id"=>"","baID"=>"","samte"=>"","DNo"=>"","saD"=>"","baeSEQ"=>"","bae"=>"","tempNamw"=>"","ly"=>"","getDate"=>"","sape"=>"","memo1"=>"","memo2"=>"备注2","prt"=>"","health"=>"","isSent"=>"","impte"=>"","memo3"=> "备注3","memo4"=>"","memo5"=> "5","manar"=>"","sextract"=>"","do_act"=>"","exnum"=>"","sample_num"=>"","pcr_num"=> "","memo"=> ""));}/** Json数据格式化 * @param Mixed $data 数据 * @param String $indent 缩进字符,默认4个空格 * 循环输出json文件的时候需要把这部分放到最外层*/ function jsonFormat($data, $indent=null){ // 对数组中每个元素递归进行urlencode操作,保护中文字符 array_walk_recursive($data, 'jsonFormatProtect'); // json encode $data = json_encode($data); // 将urlencode的内容进行urldecode $data = urldecode($data); // 缩进处理 $ret = ''; $pos = 0; $length = strlen($data); $indent = isset($indent)? $indent : ' '; $newline = "\n"; $prevchar = ''; $outofquotes = true; for($i=0; $i<=$length; $i++){ $char = substr($data, $i, 1); if($char=='"' && $prevchar!='\\'){ $outofquotes = !$outofquotes; }elseif(($char=='}' || $char==']') && $outofquotes){ $ret .= $newline; $pos --; for($j=0; $j<$pos; $j++){ $ret .= $indent; } } $ret .= $char; if(($char==',' || $char=='{' || $char=='[') && $outofquotes){ $ret .= $newline; if($char=='{' || $char=='['){ $pos ++; } for($j=0; $j<$pos; $j++){ $ret .= $indent; } } $prevchar = $char; } return $ret; } /** 将数组元素进行urlencode * @param String $val */ function jsonFormatProtect(&$val){ if($val!==true && $val!==false && $val!==null){ $val = urlencode($val); } } header('content-type:application/json;charset=utf8'); //讲json数据格式化$json_string = jsonFormat($cat);//指定目录生成文件 file_put_contents($list.".json", $json_string); $filename = $list.".json";header('Content-type: application/json'); //文件的类型header("Content-Disposition: attachment; filename=$list".".json"); //下载显示的名字readfile("$filename");exit();}
}
【原创】将数据生成json文件下载以及json中文乱码和优化json文件格式的方法相关推荐
- php在传json中文乱码,解决php json中文乱码问题
解决php json中文乱码问题 php json中文乱码的解决办法:首先将类中的中文字段进行url编码:然后再将对象进行json编码:最后进行url解码即可解决乱码问题. 推荐:<PHP视频教 ...
- Json返回时间中出现乱码问题的两种解决方法
Json返回时间中出现乱码问题的两种解决方法 参考文章: (1)Json返回时间中出现乱码问题的两种解决方法 (2)https://www.cnblogs.com/hanyinglong/archiv ...
- python读取中文文件乱码-详解Python的json文件读取及中文乱码显示问题解决方法...
Python的json文件读取及解决中文乱码显示问题 本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: ...
- python json.loads()中文问题-Python实现的json文件读取及中文乱码显示问题解决方法...
本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: { "cities": [ { & ...
- freemarker html 乱码,Freemarker生成静态html文件及中文乱码的问题.pdf
Freemarker生成静态html文件及中文乱码的问题,freemarker静态化页面,freemarker静态化,freemarker乱码,freemarker静态方法,freemarker中文乱 ...
- ssm idea后端接收数据输出在控制台时出现中文乱码
idea 后端接收数据输出在控制台时出现中文乱码 环境 maven项目, ssm框架(spring+springmvc+mybatis)注解和配置文件混合开发, tomcat服务器 解决乱码的方式(推 ...
- JFreeChart 生成图表 在linux服务器中文乱码问题
JFreeChart 生成图表 在linux服务器中文乱码问题 java中用JfreeChart可以生成图表,而不借助于flash,js,canvas等技术: 图表中的文字生成依赖于系统本地字体,但在 ...
- Spring 文件下载,出现中文乱码问题
Spring 文件下载,出现中文乱码问题 @GetMapping("/file/{id}")public ResponseEntity<InputStreamResource ...
- Pandas to_json() 中文乱码,转化为json数组
问题出现与解决 Pandas进行数据处理之后,假如想将其转化为json,会出现一个bug,就是中文文字是以乱码存储的,也就是\uXXXXXX的形式,首先要解决的就是中文乱码的问题:翻了翻官网文档,查了 ...
最新文章
- Shell test 命令
- python的division函数_Python/Numpy:Division给了我一个意外的弃用警告
- vs2019 更新安装错误_本月Windows 10累积更新再出BUG:安装时跳出错误代码
- 工作经常使用的SQL整理,实战篇(一)
- 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法...
- GET请求如何传递数组参数
- [PyTorch] 损失函数
- idea导入spring源码_Spring源码入门到放弃(一):环境准备
- python调用c++深度学习模型生成的dll(传入图片,返回多个结果)
- lamp php用开吗,LAMP环境之PHP安装使用
- html中不支持什么元素,HTML中不支持静态Expando的元素的问题
- IBM小型机安装AIX系统
- fedora14更新yum源
- 修改前端HBuilder X软件中字体颜色
- Failed to compile编译失败
- MQTT开源库mosquitto安装和使用(一)
- 最新的百度网盘不限速下载工具 - 100兆速度理论10m/s
- mysql国内研究现状_Php+Mysql技术的研究现状和发展趋势
- LZW 编解码算法实现与分析
- Listview 的自绘