如何将此字符串编码为JSON?

时间:2011-05-25 08:43:25

标签: perl json

我有这个JSON字符串

$json_string = qq{{"error" : "User $user doesn't exist."}};

我以低级别的方式构建,可以这么说。

如何使用JSON模块对其进行编码?

现在我编码像这样的哈希

use JSON;
my $json_string;

my $json = JSON->new;
$json = $json->utf8;

my $data;
$data->{users}  = $json->encode(\%user_result);
$data->{owners} = $json->encode(\%owner_result);
$json_string    = to_json($data);

print $cgi->header(-type => "application/json", -charset => "utf-8");
print $json_string;

3 个答案:

答案 0 :(得分:6)

Ratna是对的 - 你不能编码一个简单的字符串(除非你把它放在列表或哈希中)

以下是一些编码字符串的变体:

use strict;
use warnings;
use JSON;

my $user = "Johnny";

my $json_string = { error_message => qq{{"error" : "User $user doesn't exist."}} } ;
$json_string    = to_json($json_string);
print "$json_string\n";

#i think below is what you are looking for
$json_string = { error => qq{"User $user doesn't exist."} };
$json_string    = to_json($json_string);
print $json_string;

答案 1 :(得分:1)

JSON应为{key:value}[element]

给定的错误字符串:

qq{{"error" : "User $user doesn't exist."}}
据我所知,

无效。

答案 2 :(得分:1)

我不知道在响应之后是否添加了功能,但您可以使用perl使用JSON模块对json字符串进行编码。

使用allow_nonref:

$json = $json->allow_nonref([$enable])

$enabled = $json->get_allow_nonref
  

如果$ enable为true(或缺失),则encode方法可以转换a   非引用到其对应的字符串,数字或null JSON   value,这是RFC4627的扩展。同样,解码将接受   那些JSON值而不是呱呱叫。

https://metacpan.org/pod/release/MAKAMAKA/JSON-2.90/lib/JSON.pm#allow_nonref

的代码和引用