题目有点长长长。。。。。。
就四个问题:
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文件格式的方法相关推荐

  1. php在传json中文乱码,解决php json中文乱码问题

    解决php json中文乱码问题 php json中文乱码的解决办法:首先将类中的中文字段进行url编码:然后再将对象进行json编码:最后进行url解码即可解决乱码问题. 推荐:<PHP视频教 ...

  2. Json返回时间中出现乱码问题的两种解决方法

    Json返回时间中出现乱码问题的两种解决方法 参考文章: (1)Json返回时间中出现乱码问题的两种解决方法 (2)https://www.cnblogs.com/hanyinglong/archiv ...

  3. python读取中文文件乱码-详解Python的json文件读取及中文乱码显示问题解决方法...

    Python的json文件读取及解决中文乱码显示问题 本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: ...

  4. python json.loads()中文问题-Python实现的json文件读取及中文乱码显示问题解决方法...

    本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: { "cities": [ { & ...

  5. freemarker html 乱码,Freemarker生成静态html文件及中文乱码的问题.pdf

    Freemarker生成静态html文件及中文乱码的问题,freemarker静态化页面,freemarker静态化,freemarker乱码,freemarker静态方法,freemarker中文乱 ...

  6. ssm idea后端接收数据输出在控制台时出现中文乱码

    idea 后端接收数据输出在控制台时出现中文乱码 环境 maven项目, ssm框架(spring+springmvc+mybatis)注解和配置文件混合开发, tomcat服务器 解决乱码的方式(推 ...

  7. JFreeChart 生成图表 在linux服务器中文乱码问题

    JFreeChart 生成图表 在linux服务器中文乱码问题 java中用JfreeChart可以生成图表,而不借助于flash,js,canvas等技术: 图表中的文字生成依赖于系统本地字体,但在 ...

  8. Spring 文件下载,出现中文乱码问题

    Spring 文件下载,出现中文乱码问题 @GetMapping("/file/{id}")public ResponseEntity<InputStreamResource ...

  9. Pandas to_json() 中文乱码,转化为json数组

    问题出现与解决 Pandas进行数据处理之后,假如想将其转化为json,会出现一个bug,就是中文文字是以乱码存储的,也就是\uXXXXXX的形式,首先要解决的就是中文乱码的问题:翻了翻官网文档,查了 ...

最新文章

  1. Shell test 命令
  2. python的division函数_Python/Numpy:Division给了我一个意外的弃用警告
  3. vs2019 更新安装错误_本月Windows 10累积更新再出BUG:安装时跳出错误代码
  4. 工作经常使用的SQL整理,实战篇(一)
  5. 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法...
  6. GET请求如何传递数组参数
  7. [PyTorch] 损失函数
  8. idea导入spring源码_Spring源码入门到放弃(一):环境准备
  9. python调用c++深度学习模型生成的dll(传入图片,返回多个结果)
  10. lamp php用开吗,LAMP环境之PHP安装使用
  11. html中不支持什么元素,HTML中不支持静态Expando的元素的问题
  12. IBM小型机安装AIX系统
  13. fedora14更新yum源
  14. 修改前端HBuilder X软件中字体颜色
  15. Failed to compile编译失败
  16. MQTT开源库mosquitto安装和使用(一)
  17. 最新的百度网盘不限速下载工具 - 100兆速度理论10m/s
  18. mysql国内研究现状_Php+Mysql技术的研究现状和发展趋势
  19. LZW 编解码算法实现与分析
  20. Listview 的自绘

热门文章

  1. 2021年中国智能仓储行业情况分析:电商快速发展,促进智能物流及仓储快速发展[图]
  2. 学习Java需要先学C语言吗-不学c直接学java
  3. 中国广电蓄势待发,联通却自乱阵脚送来机会,年内用户跌穿3亿?
  4. Xcode13编译提示构建系统错误Legacy Build System
  5. 【单元复习】之标日初级下册第十一、十二单元
  6. 【VITAL(CVPR2018 Spotlight)】阅读笔记
  7. shell之拼接字符串
  8. 基于MATLAB实现的云模型计算隶属度
  9. deepin关机停留在灰色deepin处
  10. Go Windows上生成适用于 Linux 的可执行文件