JSON响应中不允许使用字符串(单独使用)?

时间:2016-05-08 07:43:23

标签: ruby-on-rails json

我正在尝试理解JSON响应是字符串的错误。

不起作用:

render json: "downgrade"

错误:

  

SyntaxError:位于0的JSON中的意外标记d

这有效:

render json: {recommendation: "downgrade"}

这有效:

render json: ["downgrade"]

即便如此:

render json: 17

为什么整数本身可以工作但字符串不会?或者render json: "downgrade"需要以不同的方式书写。

[注意:这是从Rails后端发送的]

1 个答案:

答案 0 :(得分:1)

downgrade输出"downgrade"。正如您所看到的,字符串周围没有引号,因此它不是有效的JSON字符串。它必须是.to_json

当你打印一个整数时,它输出一个整数,没有引号,没有额外的符号,这是一个有效的JSON。

要使其正常工作,您需要强制它打印这些引号。您可以在最后添加render json: "downgrade".to_json # => "\"test\"" 来完成此操作。

render :json

这将呈现有效的JSON数据。

但请注意,<?php require_once('facebook-php-sdk-3.2.3/src/facebook.php'); const TITLE = 'My amazing app'; const REDIRECT = 'https://example.com/myapp/'; $client = new Facebook(array( 'appId' => REPLACE_ME, 'secret' => REPLACE_ME, )); if (isset($_REQUEST['logout'])) { $client->destroySession(); header('Location: ' . REDIRECT); exit(0); } if ($client->getUser()) { try { $me = $client->api('/me?fields=id,first_name,gender'); $body = '<PRE>' . print_r($me, TRUE) . '</PRE>'; } catch (FacebookApiException $ex) { error_log($ex); $body = '<PRE>' . htmlspecialchars($e->getMessage()) . '</PRE>'; } } else { $body = sprintf('<P><A HREF="%s">Login</A></P>', $client->getLoginUrl()); } ?> <!DOCTYPE HTML> <HTML> <HEAD> <TITLE><?= TITLE ?></TITLE> </HEAD> <BODY> <?= $body ?> <P><A HREF="<?= REDIRECT ?>?logout">Logout</A></P> </BODY> </HTML> 自动为supposed to call .to_json对象。但是,正如你所看到的那样。在这种情况下。