PHP json_encode - 无效的JSON

时间:2014-10-14 14:03:53

标签: php mysql json web-services

我创建了一个php代码来搜索数据库(mySQL)的信息并“转换”为JSON。

JSON输出似乎是正确的,但是当使用一些验证器时,总是返回错误:Unexpected token

如果我在验证器上手动输入JSON输出,它就可以了!如果我复制并粘贴,则会发生异常。

验证JSON:http://devsa.url.ph/?cod=all

<?php
include('connectdb.php');

$something = $_GET['cod'];
$sqlcode = mysql_query("Select descricao from Produtos Where codigo='$something'");
$sqlcode2 = mysql_query("Select descricao from Produtos");

$jsonObj = array();

if ($something == 'all') {
    while ($result = mysql_fetch_object($sqlcode2)) {
        $jsonObj[] = $result;
    }
} else {
    while ($result = mysql_fetch_object($sqlcode)) {
        $jsonObj[] = $result;
    }
}

$final_res = json_encode($jsonObj);

echo $final_res;
?>

2 个答案:

答案 0 :(得分:3)

您的文件开头有Byte Order Marks (BOM)

您应该在没有BOM的情况下保存脚本,因为这会导致输出无效json。

如果您在确切的响应中查看开发人员工具,您将在json开始之前看到两个序列:


[{"descricao":"Amendoim"},{"descricao":"Cerveja"},{"descricao":"Peixe"}]

您应该在没有BOM的情况下保存脚本,因为这会导致输出无效json。

答案 1 :(得分:1)

您的json启动三个字节,代表UTF-8的BOM

EF BB BF

http://en.wikipedia.org/wiki/Byte_order_mark

也许有些解析器不喜欢前三个字节