为什么我的PHP脚本没有返回有效的JSON

时间:2015-12-02 18:53:42

标签: php json swift

以下链接提供的JSON有什么问题???

http://bruceexpress.com/beerstore/test/getottawaeaststorebeerlist.php

使用PHP,我从SQL查询生成上述JSON并使用json_encode对其进行编码。

$retval = mysqli_query($connection, $sql);
if(! $retval )
{
    print('Could not select: ' . mysqli_error());
}
$storearray = array();
while($row = mysqli_fetch_assoc($retval))
{
    $storearray[] = $row;
}
header('Content-Type: application/json');
echo json_encode($storearray);

在SWIFT中:

json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)

抛出NSCocoaErrorDomain Code = 3840异常。 " JSON文本不以数组开头...."

我抓住了异常并打印了数据,我看到了这一点:

("<!DOCTYPE html>\n[{\"beer_id\":\"1650\",\"store_id\":\"4618\"},{\"beer_id\":\"1650\",\"store_id\":\"4607\"},{\"beer_id\":\"1650\",\"store_id\":\"4616\"},{\"beer_id\":\"1650\",\"store_id\":\"4604\"},{\"beer_id\":\"5213\", 

..........(等我没有复制整件事。太长了。&#34;)

我知道有很多这样的问题,但我仍然没有看到我需要的答案。我的JSON有什么问题?

1 个答案:

答案 0 :(得分:0)

首先在没有BOM的情况下以UTF-8编码您的php文件。并删除<?php标记之前的所有空格 其次,如果你想发送标题,不要打印任何东西; 第三,你真的需要在你的脚本中进行一些检查和返回,因为我现在看到将来会出现至少2个错误