2017-09-19 83 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(); 
?>