2015-10-16 67 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字符串。