2015-10-16 70 views
0

我得到一個JSON對象腓添加新的JSON對象

{"cms18.test.silverbee.nl":{"domain":"cms18","template":"default"},"dmmd.test.silverbee.nl":{"domain":"dmmd","template":"default"},"opmaat.test.silverbee.nl":{"domain":"opmaat","template":"opmaat"},"opmaatdebiteurenadvies.nl":{"domain":"opmaat","template":"opmaat"},"navbar.test.silverbee.nl":{"domain":"navbar","template":"default"},"test18.test.silverbee.nl":{"domain":"test18testsilverbeenl","template":"test"},"huisartsplus.test.silverbee.nl":{"domain":"huisartsplustestsilverbeenl","template":"huisartsplus"},"robertenrademaker.test.silverbee.nl":{"domain":"robertenrademakertestsilverbeenl","template":"robert-en-rademaker"},"tilburg.test.silverbee.nl":{"domain":"tilburgtestsilverbeenl","template":"default"},"cbk-groningen.test.silverbee.nl":{"domain":"cbk_groningentestsilverbeenl","template":"cbk-groningen"},"getbusyinc.test.silverbee.nl":{"domain":"getbusyinctestsilverbeenl","template":"getbusyinc"}} 

,我想添加/推一個新的PHP字符串我給它量身定做的,我有它這樣的我不知道,如果它是正確的。

<?php 
    $list= file_get_contents('list.json'); 
    $list = json_decode($list, true); 

    include('veranderen.php'); 


    // Het toevoegen van een nieuwe URL 
    $url = $_POST['new_url']; 
    $t_d = $_POST['t_d']; 
    $t_t = $_POST['t_t']; 
    $str[$url] = "{domain:".$t_d.","."template:".$t_t."},"; 

    include('delete.php'); 
    include('interface.php'); 
    include('lijst.php'); 
?> 
+1

如果您正在解碼json_object,而不是將已解碼數組中的每個值進行解壓縮,然後再次對其進行編碼並替換文件內容。 – Akshay

+0

你的變量是'$ list',但是你正在改變'$ str'。應該是'$ list [$ url]'。並且不要將新值添加爲JSON字符串。將它作爲數組添加,然後加上'json_encode'。 –

回答

0

東西當你在PHP中你會得到一個關聯數組解碼JSON字符串。

所以,你可以只

$list[$url] = array("domain" => $t_d, "template" => $t_t); 

,然後對其進行編碼,並改寫你的list.json。

0

我想你可以嘗試這樣的

<?php 
    $list= file_get_contents('list.json'); 
    $list = json_decode($list, true); 

    include('veranderen.php'); 


    $url = $_POST['new_url']; 
    $t_d = $_POST['t_d']; 
    $t_t = $_POST['t_t']; 

    $tmp=array(); 
    $tmp[ $url ] = array('domain'=>$t_d, 'template'=>$t_t); 
    $list = json_encode(array_merge($list, $tmp), JSON_FORCE_OBJECT); 
    $bytes=file_put_contents('list.json', $list, FILE_TEXT) 

    include('delete.php'); 
    include('interface.php'); 
    include('lijst.php'); 
?> 
0

我在,你使用字符串連接構建JSON示例代碼中看到$str[$url] = "{domain:".$t_d.","."template:".$t_t."},";

我建議你瞭解PHP的內置json_encode()json_decode()功能 - 這允許您使用JSON不工作不得不亂用實際的字符串值。

構建要作爲普通PHP數組或對象結構輸出的數據結構,然後將其傳遞到json_encode()以獲取完成的字符串。

您使用預先存在的字符串開始提問。如果你已經在你的PHP代碼中創建了它,那麼我建議將它重新編碼爲一個PHP數組,並且在你最終輸出時只使用json_encode()。這將允許您在程序中的任何位置添加或更改數據。

如果您從其他地方收到了JSON字符串(即您已獲取JSON格式的字符串),請先使用json_decode()將其轉換爲PHP數組/對象結構,然後以此形式處理您的PHP程序,然後使用json_encode()在準備輸出時再次將其重新轉換爲JSON字符串。