PHP中的硬代码JSON数组



我有两个来自两个不同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.'"}';

最新更新