尝试使用mysql中的数组在PHP中以某种方式格式化json

尝试使用mysql中的数组在PHP中以某种方式格式化json,php,mysql,json,Php,Mysql,Json,我正在尝试为我的网站构建一个restful web服务。我有一个php mysql查询,使用以下代码: function mysql_fetch_rowsarr($result, $taskId, $num, $count){ $got = array(); if(mysql_num_rows($result) == 0) return $got; mysql_data_seek($result, 0); while ($row = mysql_fetch_assoc($

我正在尝试为我的网站构建一个restful web服务。我有一个php mysql查询,使用以下代码:

function mysql_fetch_rowsarr($result, $taskId, $num, $count){
  $got = array();
  if(mysql_num_rows($result) == 0)
    return $got;
  mysql_data_seek($result, 0);
  while ($row = mysql_fetch_assoc($result)) {
    $got[]=$row;
}
  print_r($row)
  print_r(json_encode($result));
  return $got;  
它使用上面代码中的print_r($data)返回以下内容

Array ( [0] => Array ( [show] => Blip TV Photoshop Users TV [region] => UK [url] => http://blip.tv/photoshop-user-tv/rss [resourceType] => RSS / Atom feed [plugin] => Blip TV ) [1] => Array ( [show] => TV Highlights [region] => UK [url] => http://feeds.bbc.co.uk/iplayer/highlights/tv [resourceType] => RSS / Atom feed [plugin] => iPlayer (UK) ) ) 
以下是它返回的json:

 [{"show":"Blip TV Photoshop Users TV","region":"UK","url":"http:\/\/blip.tv\/photoshop-user-tv\/rss","resourceType":"RSS \/ Atom feed","plugin":"Blip TV"},{"show":"TV Highlights","region":"UK","url":"http:\/\/feeds.bbc.co.uk\/iplayer\/highlights\/tv","resourceType":"RSS \/ Atom feed","plugin":"iPlayer (UK)"}]
我使用以下代码向数组中添加一些项,然后将其转换为json并返回json

 $got=array(array("resource"=>$taskId,"requestedSize"=>$num,"totalSize"=>$count,"items"),$got);
使用以下代码将其转换为json并返回

 $response->body = json_encode($result);
 return $response;
这给了我以下json

[{"resource":"video","requestedSize":2,"totalSize":61,"0":"items"},[{"show":"Blip TV Photoshop Users TV","region":"UK","url":"http:\/\/blip.tv\/photoshop-user-tv\/rss","resourceType":"RSS \/ Atom feed","plugin":"Blip TV"},{"show":"TV Highlights","region":"UK","url":"http:\/\/feeds.bbc.co.uk\/iplayer\/highlights\/tv","resourceType":"RSS \/ Atom feed","plugin":"iPlayer (UK)"}]]

API的使用者希望json采用以下格式,我不知道如何让它以这种方式出现。我已经搜索并尝试了我能找到的一切,但仍然没有得到它。我甚至还没有开始尝试获取xml格式

 {"resource":"video", "returnedSize":2, "totalSize":60,"items":[{"show":"Blip TV Photoshop Users TV","region":"UK","url":"http://blip.tv/photoshop-user-tv/rss","resourceType":"RSS / Atom feed","plugin":"Blip TV"},{"show":"TV Highlights","region":"UK", "url":"http://feeds.bbc.co.uk/iplayer/highlights/tv","resourceType":"RSS / Atom feed","plugin":"iPlayer (UK)"}]}
我非常感谢大家在这方面的帮助。我已经设置了一个只读访问的数据库副本,可以提供所有有帮助的源代码,我要警告你,我刚刚学习php,我学习了basic,fortran 77编程,所以php非常混乱,我猜它相当臃肿

好的,上面关于json编码的问题已经回答了。API使用者还希望特殊字符“/”不能转义,因为它是一个URL。我在JSON_编码中尝试了“JSON_UNESCAPED_SLASHES”,得到了以下错误

 json_encode() expects parameter 2 to be long

您的
$result
行应该如下所示

$result=array(
    "resource"=>$taskId,
    "requestedSize"=>$num,
    "totalSize"=>$count,
    "items" => $got
);

您的
$result
行应该如下所示

$result=array(
    "resource"=>$taskId,
    "requestedSize"=>$num,
    "totalSize"=>$count,
    "items" => $got
);

json\u decode
应用于所需的json输出,并查看需要组装哪些数组才能获得相同的json。如何将所需的json转换为php?我可以把它变成一个字符串,然后json)解码字符串吗?“API的消费者希望json采用以下格式”——这是所需的格式,如下所示。您的消费者想要的显然是将所需的
json_decode
应用到所需的json输出,并查看需要组装什么数组才能获得相同的结果如何将所需的json转换为php?我可以把它变成一个字符串,然后json)解码字符串吗?“API的消费者希望json采用以下格式”——这是所需的格式,如下所示。你的消费者想要的显然是你想要的有趣的是,一旦有人把正确的答案放在你的鼻子底下,这是多么容易。如果你用
json\u decode
和你想要达到的行(你问题中的最后一个json),你也会得到同样的结果。我对这个问题做了一个小改动,我尝试将JSON_UNESCAPED_斜杠添加到JSON_编码中,并得到以下结果。警告:json_encode()要求参数2为长字符串in@Moltra:正如文档()中所述,常量是在PHP5.4中引入的。很明显,你使用的是一些较旧的版本,我使用的是PHP版本:PHP5.3使用PHP5.3,这是godaddy 4GH上当前的PHP。有趣的是,一旦有人把正确的答案放在你的鼻子底下,这是多么容易。如果你用
json\u decode
和你想要达到的行,你也会得到同样的结果(您问题中的最后一个json)我对问题做了一个小改动,我尝试将json_UNESCAPED_斜杠添加到json_编码中,并得到以下结果。警告:json_encode()预期参数2很长,字符串给定in@Moltra:如文件中所述()这个常量是在PHP5.4中引入的。显然,您使用的是一些较旧的版本,我使用的是PHP5.3版本:PHP5.3使用的是PHP5.3,这是godaddy 4GH上当前的php。