0

我有两个来自两个不同 SQL 查询的变量,我想将它们放入一个 JSON 数组(即$hometown$topcat)中。我正在尝试对其进行硬编码,但不确定它的外观。

   print(json_encode('{"hometown":"' . $hometown .'", "category":"'. $topcat .'"}'));

我的输出是这样的:

{\"hometown\":\"Seattle, WA\", \"category\":\"Movies\"}"

不知道斜线是从哪里来的(我想我可以做stripslashes?)而且似乎我还需要添加'['和']'?什么是正确的格式?

4

3 回答 3

5

json_encode()接受你的数组或对象,它不接受已经被 JSON 编码的字符串。可以这样做:

print json_encode(array('hometown' => $hometown, 'category' => $topcat));

输出

{"hometown":"Seattle, WA","category":"Movies"}
于 2013-02-04T17:39:48.083 回答
4

该字符串已经看起来像 JSON;你为什么要再次编码?

不知道斜线是从哪里来的

因为该代码对包含双引号的字符串进行编码,必须在 JSON 中对其进行转义。

不安全,愚蠢,但简单的解决方案:

print('{"hometown":"' . $hometown .'", "category":"'. $topcat .'"}');

更好的解决方案:

print(json_encode(array(
    'hometown' => $hometown,
    'category' => $topcat,
)));
于 2013-02-04T17:39:05.650 回答
0

该字符串已被格式化为 JSON 对象,编码是添加斜杠的内容。该json_encode()函数用于将数组转换为 JSON 对象而不是字符串,以及print(),print()已弃用且echo()应使用。

这是您的解决方案:

echo '{"hometown":"'.$hometown.'", "category":"'.$topcat.'"}';
于 2013-02-04T17:44:32.020 回答