我有这个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;
答案 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
的代码和引用