3

我尝试手动构建一个 Json 字符串以发送给客户端。

{'result':'hhh'} 

当我使用

echo json_encode(array('result'=>'hhh'));

它完美地到达。但是当我这样做时

echo "{'result':'hhh'}";

它不是

我发现这两个请求之间的唯一区别是第一个请求具有:

Content-Length: 9    header

第二个(不起作用)

Content-Length: 16   header

两个字符串都应该是内容长度:16!!!我想这与 ZF 和 Mootools 的结合有关。

4

2 回答 2

2

根据规范,JSON 需要在键名和字符串值周围加上双引号。

echo json_encode(array('result'=>'hhh'));

将输出

{"result":"hhh"}

此输出的长度为 16 个字节,如下所示:

echo strlen(json_encode(array('result'=>'hhh')));

输出“16”。

任何遵循规范的 JSON 解码器都会在出现手动回显的 JSON 时失败或抛出异常。

于 2009-03-26T04:06:35.403 回答
1

UTF-8没有问题,因为 UTF-8 是它的标准编码。听起来好像您正在以不同的编码方案回显某些内容,这会中断,而 json_encode() 正在为您转码。

于 2009-03-26T03:18:06.003 回答