【问题标题】:Why is my PHP script not returning valid JSON为什么我的 PHP 脚本没有返回有效的 JSON
【发布时间】:2015-12-02 18:53:42
【问题描述】:

下面链接中的 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\", 

.......(等等。我没有复制整个内容。它太长了。”)

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

【问题讨论】:

  • json 中不应该有 doctype;您是否也正确设置了标题(例如:stackoverflow.com/questions/4064444/…)?
  • 您的 PHP 脚本还回显/打印/输出什么?
  • 您在回显JSON之前将&lt;!DOCTYPE html&gt;打印到页面上
  • I showed all relevant php code. 我的猜测是发送它的是不相关的代码。检查所有包含的文件是否没有输出任何内容。而且我确信它只是自动的,因为您在某处有一些脚本说echo "&lt;!DOCTYPE html&gt;";
  • 我真是个白痴! 位于 php 脚本的第一行。前面没有回声,但它就在那里。愚蠢的我!谢谢大家!

标签: php json swift


【解决方案1】:

首先将您的 php 文件编码为 UTF-8 而不使用 BOM。并删除&lt;?php标签之前的所有空格 其次,如果您想发送标题,请不要打印任何内容; 第三,您确实需要在脚本中进行一些检查并返回,因为我现在看到至少 2 个错误将在未来出现

【讨论】:

  • 没有 BOM 的 UTF-8 不适用于这种情况。正如我在上面所承认的,它是一个位于脚本顶部的“”,它是我从另一个文件中复制和粘贴的。我的愚蠢!至于错误,是的,我稍后会处理,但是我正在为自己的需要生成一个数据库。因此,我完全控制了它的结构,并且可以对我的代码更宽容一点。这是为每周一次的库存检查做准备,将所有啤酒与安大略省的所有啤酒商店进行匹配,然后将这些数据推送到我的数据库中。但是,首先我必须扫描 html 并提取数据。
  • 没关系,谢尔盖。只有 Doctype 是问题所在。现在一切都很好,我已经成功地生成了我需要的所有商店/啤酒对。希望有一种更快的方法来做到这一点,但现在我必须打开然后扫描每个商店/啤酒对的 html。例如:thebeerstore.ca/beers/inventory/1650/4618
猜你喜欢
  • 2019-05-16
  • 1970-01-01
  • 2019-07-09
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 2016-11-11
相关资源
最近更新 更多