【原创】将数据生成json文件下载以及json中文乱码和优化json文件格式的方法
来源:互联网 发布:v版4s支持什么网络 编辑:程序博客网 时间:2024/06/07 01:08
题目有点长长长。。。。。。
就四个问题:
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(); } }
阅读全文
0 0
- 【原创】将数据生成json文件下载以及json中文乱码和优化json文件格式的方法
- 解决springmvc返回json数据IE出现文件下载和json数据中文乱码问题
- JSON数据的中文乱码问题
- 解决JSON数据的中文乱码问题
- JSON返回的数据中文乱码问题!!!
- JSON数据传递的中文乱码
- JSON数据的解析和生成Json数据
- 生成json文件和解析json文件
- JSON数据的生成
- JSON数据的生成
- 生成JSON的方法
- 【JSON】生成JSON数据的方式
- 【JSON】生成JSON数据的方式
- scrapy生成json中文乱码解决
- 生成JSON数据--官方方法
- JSON以及Java转换JSON的方法
- JSON数据的生成和解析
- 【C++】JSON文件的读取和生成
- SaltStack实战之SaltStack快速入门
- Spark性能调优(六)
- 手动创建Http服务器(集群Http服务器)
- Kotlin之类和对象
- 网易统计回文
- 【原创】将数据生成json文件下载以及json中文乱码和优化json文件格式的方法
- MD5+salt加密
- mysql EXISTS和NOT EXISTS
- [Android]DDMS查看app保存的Sqlite数据库db文件和db升级
- Python之import方法引入模块详解
- ffmpeg视频学习网站
- 安卓新标准出台_告别乱弹窗_你的手机真会省电么?
- 2017省市区最新编码(依据国家统计局最新数据生成)
- git log命令