2017-09-19 34 views
0

我是JSON的新手,我想知道如何格式化我的JSON文件,以便能够在条形图中呈现它。如何格式化json文件?

我有下面的PHP代码:

<?php 

$search_value=$_POST["search"]; 
$mysqli = new mysqli('localhost','root','password','mydb'); 
$myArray = array(); 
if ($result = $mysqli->query("SELECT * FROM transcriptome WHERE genename LIKE '%$search_value%'")) { 

    while($row = $result->fetch_array(MYSQL_ASSOC)) { 
      $myArray = $row; 
    } 
    file_put_contents('jsonoutput.json', json_encode($myArray)); 
    echo json_encode($myArray); 
} 

$result->close(); 
$mysqli->close(); 
?> 

我的实际输出: (给定的基因(xkr4)作为输入)

{"genename":"xkr4","TA11MEAN":"974.25","TA11STD":"99.0085223605","TA21MEAN":"710.75","TA21STD":"115.79831605","TA22MEAN":"736.5","TA22STD":"115.79831605","TA23MEAN":"903.75","TA23STD":"107.283211641","TB11MEAN":"799.25","TB11STD":"97.2660655111","TB21MEAN":"658","TB21STD":"91.7959694104","TB22MEAN":"592.75","TB22STD":"70.9379129944","TB23MEAN":"864","TB23STD":"92.7280971443"} 

我如何想获得我的输出:

{"genename":"xkr4",{"TA11MEAN":"974.25"},{"TA11STD":"99.0085223605"},{"TA21MEAN":"710.75"},{"TA21STD":"115.79831605"},{"TA22MEAN":"736.5"},{"TA22STD":"115.79831605"},{"TA23MEAN":"903.75"},{"TA23STD":"107.283211641"},{"TB11MEAN":"799.25"},{"TB11STD":"97.2660655111"},{"TB21MEAN":"658"},{"TB21STD":"91.7959694104"},{"TB22MEAN":"592.75"},{"TB22STD":"70.9379129944"},{"TB23MEAN":"864"},{"TB23STD":"92.7280971443"}} 

如果有人可以给我这个方向(或解决它)那太棒了!

在此先感谢:)

+5

'json_encode($的数据,JSON_PRETTY_PRINT)' – Sammitch

+0

你确定你需要这个漂亮的印刷? JS,或者任何你用来解码json的东西都不会在意,只要它是有效的JSON即可。 – JimL

+0

这是没有道理的,为什么要关心JSON风格或美丽,它必须是有效的。 –

回答

0

我建议你首先检查你如何获取数组中的数据。 $ myArray []应该填充如下所示的数据。然后使用JSON_PRETTY_PRINT。

/*USED TO SHOW FULL ARRAY SIZE*/ 
    ini_set('xdebug.var_display_max_depth', -1); 
    ini_set('xdebug.var_display_max_children', -1); 
    ini_set('xdebug.var_display_max_data', -1); 


    $myArray=array("genename"=>array(array("xkr4"=>array(
    array("TA11MEAN"=>"974.25","TA11STD"=>"99.0085223605"), 
    array("TA21MEAN"=>"710.75","TA21STD"=>"115.79831605"), 
    array("TA22MEAN"=>"736.5","TA22STD"=>"115.79831605"), 
    array("TA23MEAN"=>"903.75","TA23STD"=>"107.283211641"), 
    array("TB11MEAN"=>"799.25","TB11STD"=>"97.2660655111"), 
    array("TB21MEAN"=>"658","TB21STD"=>"91.7959694104"), 
    array("TB22MEAN"=>"592.75","TB22STD"=>"70.9379129944"), 
    array("TB23MEAN"=>"864","TB23STD"=>"92.7280971443"), 

)))); 
$jsonData=json_encode($myArray,JSON_PRETTY_PRINT); 

var_dump($jsonData); 
0
$json_from_database='[{"genename":"xkr4","TA11MEAN":"974.25","TA11STD":"99.0085223605","TA21MEAN":"710.75","TA21STD":"115.79831605","TA22MEAN":"736.5","TA22STD":"115.79831605","TA23MEAN":"903.75","TA23STD":"107.283211641","TB11MEAN":"799.25","TB11STD":"97.2660655111","TB21MEAN":"658","TB21STD":"91.7959694104","TB22MEAN":"592.75","TB22STD":"70.9379129944","TB23MEAN":"864","TB23STD":"92.7280971443"}]'; 

//print decode array from databse 
$decoded=json_decode($json_from_database); 

var_dump($decoded); 
foreach ($decoded[0] as $key => $value) { 
    echo "\n "; 
    print $key; 
    print " " .$decoded[0]->$key; 
} 
array(1) { 
    [0]=> 
    object(stdClass)#1 (17) { 
    ["genename"]=> 
    string(4) "xkr4" 
    ["TA11MEAN"]=> 
    string(6) "974.25" 
    ["TA11STD"]=> 
    string(13) "99.0085223605" 
    ["TA21MEAN"]=> 
    string(6) "710.75" 
    ["TA21STD"]=> 
    string(12) "115.79831605" 
    ["TA22MEAN"]=> 
    string(5) "736.5" 
    ["TA22STD"]=> 
    string(12) "115.79831605" 
    ["TA23MEAN"]=> 
    string(6) "903.75" 
    ["TA23STD"]=> 
    string(13) "107.283211641" 
    ["TB11MEAN"]=> 
    string(6) "799.25" 
    ["TB11STD"]=> 
    string(13) "97.2660655111" 
    ["TB21MEAN"]=> 
    string(3) "658" 
    ["TB21STD"]=> 
    string(13) "91.7959694104" 
    ["TB22MEAN"]=> 
    string(6) "592.75" 
    ["TB22STD"]=> 
    string(13) "70.9379129944" 
    ["TB23MEAN"]=> 
    string(3) "864" 
    ["TB23STD"]=> 
    string(13) "92.7280971443" 
    } 
} 

    genename xkr4 
    TA11MEAN 974.25 
    TA11STD 99.0085223605 
    TA21MEAN 710.75 
    TA21STD 115.79831605 
    TA22MEAN 736.5 
    TA22STD 115.79831605 
    TA23MEAN 903.75 
    TA23STD 107.283211641 
    TB11MEAN 799.25 
    TB11STD 97.2660655111 
    TB21MEAN 658 
    TB21STD 91.7959694104 
    TB22MEAN 592.75 
    TB22STD 70.9379129944 
    TB23MEAN 864 
    TB23STD 92.7280971443 
This is how your data looks like from database it is a array of rows row is a object 
0

我解决了它:

<?php 

$search_value=$_POST["search"]; 
$mysqli = new mysqli('localhost','root','password','mydb'); 
$myArray = array(); 
if ($result = $mysqli->query("SELECT * FROM transcriptome WHERE genename LIKE '%$search_value%'")) { 


    while($row = $result->fetch_array(MYSQL_ASSOC)) { 
    $myArray = $row; 
    } 
    //file_put_contents('jsonoutput.json', json_encode($myArray)); 
    $json = json_encode($myArray); 
    $array = json_decode($json, true); 

    $new_array = array(); 
    foreach($array as $key => $value){ 
    $newarray[] = array($key=>$value); 
    } 

echo json_encode($newarray); 
file_put_contents('jsonoutput.json', json_encode($newarray)); 



} 


$result->close(); 
$mysqli->close(); 
?>