我想动态创建一个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对象,以便检索关键字和值,所以我必须分别检索关键字和数值。
根据您的评论,
这个数组的结果如下:
[{"TEST1":"valueT1"},{"TEST1":"otherValue"}]
,我想要的是有一个像这样的json:[{"TEST1":['valueT1','otherValue']}]
,正如你所看到的,我想避免重复的键。
解决方案:
在您的while
循环中,更改此行
$array_container[] = array($CapaEnviar => $fila['test_name']);
至
$array_container[$CapaEnviar][] = $fila['test_name'];
更新:
如何通过ajax检索这个密钥及其值?
由于您希望从服务器获得json对象,请将此设置dataType:'json'
添加到AJAX请求中。dataType
是您期望从服务器返回的数据类型。在success()
回调函数中,循环json结果以获得(key,value)对
以下是参考资料:
- jQuery.ajax()
所以你的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
}
});