2016-05-06 4 views
0

Я хотел бы создать объект JSON динамически. Объект JSON должен будет быть как следующим образом:Как я могу создать объект JSON динамически?

{ 
       $capa:[$fila['test_name'],...etc], 
       . 
       . 
       .etc  

}; 

ключ и значение будет извлекаться через запрос MySQL.
Это то, что я делаю:

$array_container= array(); 

while($fila=mysqli_fetch_assoc($sql)){ 


        $format_org=str_replace(" ","_",$fila["organization"]); 
        $format_eval=str_replace(" ","_",$fila["EvaluationType"]); 
        $format_test=str_replace(" ","_",$fila["test_name"]); 
             $CapaEnviar=$format_org.$format_eval; 

           $array_container[] = array($CapaEnviar => $fila['test_name']); 

} 

echo json_encode($array_container,true); 

Используя предыдущий код, я могу получить объект JSON с повторяющимися ключами.

Этот код является ответом на запрос AJAX, поэтому, как только объект JSON был создан правильно, я отправлю обратно этот объект JSON, чтобы извлечь ключ и значение, поэтому мне придется отдельно извлечь ключ и стоимость.

+0

Вы уже динамически создаете объект JSON при выдаче json_encode ($ array_container, true), поэтому я не уверен, что вы просите. Просьба пояснить и показать, что вы пробовали до сих пор. – Webomatik

+1

Я пытаюсь создать динамический массив, а затем преобразовать его в объект json. результаты этого массива выглядят следующим образом: '[{" TEST1 ":" valueT1 "}, {" TEST1 ":" otherValue "}]' и то, что я ищу, - это как json : '[{" TEST1 ": ['valueT1', 'otherValue']}]' как вы можете видеть, я хочу избежать дублирования ключей.если можно проверить наличие существующего ключа. – riztak

+0

Ха, я вижу, спасибо за разъяснение. – Webomatik

ответ

2

Ваш комментарий,

... результаты этого массива, как следует: [{"TEST1":"valueT1"},{"TEST1":"otherValue"}] и то, что я ищу, чтобы иметь JSON как это: [{"TEST1":['valueT1','otherValue']}], как вы можете видеть, я хотите избежать дубликатов ключей.

Решение:

В вашем while цикле, измените эту строку

$array_container[] = array($CapaEnviar => $fila['test_name']); 

в

$array_container[$CapaEnviar][] = $fila['test_name']; 

Update:

Как я могу получить этот ключ и их значения через ajax?

Поскольку вы ожидаете объект json с сервера, добавьте этот параметр dataType:'json' в ваш запрос AJAX. dataType - это тип данных, которые вы ожидаете от сервера. И в функции success() обратного вызова, Переберите результат JSon, чтобы получить (ключ, значение) пар

Вот ссылка:

Так что ваш AJAX код скелет должен быть таким :

$.ajax({ 
    type: 'POST', 
    url: 'yourpage.php', 
    dataType: 'json', 
    cache: 'false', 

    beforeSend: function(){ 

    }, 

    success: function(data){ 
     $.each(data, function(key, value) { 
      alert("Key:" + key + ", value: " + value); 
     }); 
    }, 

    error: function(){ 
     // error 
    } 
}); 
+0

Спасибо, работает хорошо !. Кстати, как я могу получить этот ключ и их значения через ajax? – riztak

+0

Я хочу получить имя ключа и их значения, у кого-то есть идея? – riztak

+0

@ riztak Хорошо, позвольте мне изменить мой ответ. –

Смежные вопросы