如何用Perl的JSON::XS生成符合JS文件格式的对象代码?
适配JS对象格式的解决方案
方法一:使用专业模块生成JS格式
借助JavaScript::Value::Escape模块可以直接将Perl哈希转换为符合要求的JS对象格式,自动处理键名无引号、字符串值用单引号的规则。
- 安装模块
cpanm JavaScript::Value::Escape
- 示例代码
use JavaScript::Value::Escape; my %hash = ( info => ["test", "test2"], name => "test", uid => "1" ); print js_escape(\%hash);
执行后输出的内容直接匹配目标JS格式:
{info:['test','test2'],name:'test',uid:'1'}
方法二:手动修改JSON输出(轻量方案)
如果不想新增模块依赖,可以先通过JSON::XS生成标准JSON,再用正则替换调整格式:
use JSON::XS; my %hash = ( info => ["test", "test2"], name => "test", uid => "1" ); my $json_str = encode_json \%hash; # 移除键名的双引号 $json_str =~ s/"([^"]+)":/$1:/g; # 将字符串值的双引号替换为单引号 $json_str =~ s/":"/:'/g; $json_str =~ s/",/,'/g; $json_str =~ s/"\]/']/g; print $json_str;
注意:这种方式仅适合数据无特殊字符(如引号、冒号)的场景,若哈希包含复杂内容,优先选择方法一的专业模块避免格式错误。
内容的提问来源于stack exchange,提问作者dave
相关产品推荐
相关产品推荐

