使用php问题创建JSON字符串
我想创建一个具有以下结构的JSON:使用php问题创建JSON字符串,php,json,Php,Json,我想创建一个具有以下结构的JSON: {"id":"ws", "data":[ {"name":"it.geosolutions"}, {"name":"cite"}, {"name":"testwor"}, {"name":"tiger"}, {"name":"sde"}, {"name":"topp"}, {"name":"newwork"}, {"name":"sf"}, {"name":"nurc"} ] } 我有: 我得到:
{"id":"ws",
"data":[
{"name":"it.geosolutions"},
{"name":"cite"},
{"name":"testwor"},
{"name":"tiger"},
{"name":"sde"},
{"name":"topp"},
{"name":"newwork"},
{"name":"sf"},
{"name":"nurc"}
]
}
我有:
我得到:
{"id":"ws",
"data":[
"{\"name\":\"it.geosolutions\"}",
"{\"name\":\"cite\"}",
"{\"name\":\"testwor\"}",
"{\"name\":\"tiger\"}",
"{\"name\":\"sde\"}",
"{\"name\":\"topp\"}",
"{\"name\":\"newwork\"}",
"{\"name\":\"sf\"}",
"{\"name\":\"nurc\"}"
]
}
怎么修理
更新
我被试过这样做:
function funcArray(){
foreach ($ws as $item){
$wsarray[] = json_encode(array('name'=>$item->name));
}
return $wsarray;
}
但是你可以得到:
{"id":"ws","data":["{\"name\":\"it.geosolutions\"}","{\"name\":\"cite\"}","{\"name\":\"testwor\"}","{\"name\":\"tiger\"}","{\"name\":\"sde\"}","{\"name\":\"topp\"}","{\"name\":\"newwork\"}","{\"name\":\"sf\"}","{\"name\":\"nurc\"}"]}
怎么了?不要这样构建JSON。改为在PHP数组上使用
$arr = array(
"id" => "ws",
"data" => array(
array("name" => "it.geosolutions"),
array("name" => "cite"),
array("name" => "testwor"),
array("name" => "tiger"),
array("name" => "sde"),
array("name" => "topp"),
array("name" => "newwork"),
array("name" => "sf"),
array("name" => "nurc")
));
echo json_encode($arr);
输出
{id:ws,数据:[{name:it.geosolutions},{name:cite},{name:testwor},{name:tiger},{name:sde},{name:topp},{name:newwork},{name:sf},{name:nurc}}
要使用$ws阵列,您可能可以执行以下操作:
echo json_data(array(
"id" => "ws",
"data" => array_map(function($item) { return array("name" => $item->name); }, $ws)
));
注意:这样使用需要>=PHP5.3您需要先创建一个数组,然后使用json_encode来创建json输出。不要硬编码任何json 与其在函数funcArray中构建json字符串,为什么不构建一个数组并返回它呢
function funcArray(){
foreach ($ws as $item){
$wsarray[] = array("name"=>$item->name);
}
return $wsarray;
}
$json_data = array ('id'=>'ws','data'=>funcArray());
$json = json_encode($json_data);
巧妙使用数组_映射,+1。
function funcArray(){
foreach ($ws as $item){
$wsarray[] = array("name"=>$item->name);
}
return $wsarray;
}
$json_data = array ('id'=>'ws','data'=>funcArray());
$json = json_encode($json_data);