PHP中的硬编码JSON数组

时间:2013-02-04 17:37:31

标签: php json

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

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

我的输出是:

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

不知道斜线来自哪里(我想我可以做条带?)看来我还需要添加'['和']'?什么是适当的格式?

3 个答案:

答案 0 :(得分:5)

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

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

输出

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

答案 1 :(得分:4)

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

  

不确定斜杠来自哪里

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

不安全,愚蠢但容易解决方案:

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

更好的解决方案:

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

答案 2 :(得分:0)

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

以下是您的解决方案:

echo '{"hometown":"'.$hometown.'", "category":"'.$topcat.'"}';