我有两个不同的SQL查询中的两个变量,我想将它们放入一个JSON数组(即$hometown
和$topcat
)。我正在尝试对其进行硬编码,但不确定它是如何看待的。
print(json_encode('{"hometown":"' . $hometown .'", "category":"'. $topcat .'"}'));
我的输出是:
{\"hometown\":\"Seattle, WA\", \"category\":\"Movies\"}"
不知道斜线来自哪里(我想我可以做条带?)看来我还需要添加'['和']'?什么是适当的格式?
答案 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.'"}';