我正在生成一个Json字符串,它没有生成好的Json.对我来说它看起来不错,但我有一个错误.我找不到它的位置以及如何删除它.这是整个来源(因为它很短).
use strict;
use warnings;
use JSON qw( decode_json );
sub getJsonStr{
print "Enter the name of the person: ";
my $name = <>;
print "Enter the age of the person: ";
my $age = <>;
my $json = '{
"name" :"'.$name.'",
"age" :"'.$age.'"
}';
}
my $jsonStr = getJsonStr();
print $jsonStr;
my $jobj = decode_json($jsonStr);
Run Code Online (Sandbox Code Playgroud)
您的问题是由于没有转义具有特殊含义或JSON字符串中不允许的输入字符引起的.
您用于输入数据的方法保证在其末尾有一个新的行字符.大概你不想这样,所以你应该删除它(chomp而不是转义).
但这并不能阻止用户输入具有特殊含义的其他字符.如果要生成JSON,那么使用JSON库,不要只是将字符串混合在一起.你已经在使用JSON.pm了,所以从中获取编码器以及解码器.
sub getJsonStr {
print "Enter the name of the person: ";
my $name = <>;
chomp $name;
print "Enter the age of the person: ";
my $age = <>;
chomp $age;
my $json = encode_json({ name => $name, age => $age });
}
Run Code Online (Sandbox Code Playgroud)