Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php问题创建JSON字符串_Php_Json - Fatal编程技术网

使用php问题创建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"} ] } 我有: 我得到:

我想创建一个具有以下结构的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\"}"
  ]
}
怎么修理

更新

我被试过这样做:

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);