我有两个来自两个不同SQL查询的变量,我想将它们放入一个JSON数组(即$hometown
和$topcat
)。我试着把它硬编码,但不确定它应该是什么样子。
print(json_encode('{"hometown":"' . $hometown .'", "category":"'. $topcat .'"}'));
我的输出是:
{"hometown":"Seattle, WA", "category":"Movies"}"
不确定斜杠是从哪里来的(我想我可以做条纹斜杠?)而且似乎我也需要添加"["one_answers"]"?这个的正确格式是什么?
json_encode()
接受您的数组或对象,它不接受已经用JSON编码的字符串。可以这样做:
print json_encode(array('hometown' => $hometown, 'category' => $topcat));
输出
{"hometown":"Seattle, WA","category":"Movies"}
该字符串看起来已经像JSON;你为什么要重新编码?
不确定斜杠来自
因为该代码编码了一个包含双引号的字符串,该字符串必须在JSON中转义。
不安全、愚蠢但简单的解决方案:
print('{"hometown":"' . $hometown .'", "category":"'. $topcat .'"}');
更好的解决方案:
print(json_encode(array(
'hometown' => $hometown,
'category' => $topcat,
)));
字符串已经格式化为JSON对象,编码就是添加斜杠的内容。json_encode()
函数用于将数组转换为JSON对象,而不是字符串。print()
、print()
已弃用,应使用echo()
。
这是您的解决方案:
echo '{"hometown":"'.$hometown.'", "category":"'.$topcat.'"}';