首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘to’和/或`JSON::to_json`将我的数据从整数无声地转换成字符串?

为什么‘to’和/或`JSON::to_json`将我的数据从整数无声地转换成字符串?
EN

Stack Overflow用户
提问于 2020-12-14 11:48:23
回答 1查看 193关注 0票数 6

我不明白为什么join在下面的示例中更改JSON::to_string的输出:

代码语言:javascript
复制
#!/usr/bin/perl
use v5.26;
use Data::Dumper;
use JSON;

my @version = (1, 2, 3, 4);

say "version: ", join ".", @version;    # comment this line out

$Data::Dumper::Terse = 1;
$Data::Dumper::Indent = 0;

say Dumper(\@version);
say to_json(\@version);

带有包含join的行的输出

代码语言:javascript
复制
version: 1.2.3.4
[1,2,3,4]
["1","2","3","4"]

但是用join注释掉一行时,to_json的输出突然显示整数而不是字符串,尽管Data::Dumper的输出仍然是相同的:

代码语言:javascript
复制
[1,2,3,4]
[1,2,3,4]
EN

回答 1

Stack Overflow用户

发布于 2020-12-14 20:59:39

这是您必须在Perl中保持数据纯度的少数几次之一。一旦创建了某种类型的变量,就不能在任何其他类型的上下文中使用它。如果确实需要,首先将其复制到一个新变量以保留原始变量。

代码语言:javascript
复制
use feature 'say';
use Data::Dumper;
use JSON;

my @version = (1, 2, 3, 4);

{ say "version: ", join ".", my @copy = @version; }

$Data::Dumper::Terse = 1;
$Data::Dumper::Indent = 0;

say Dumper(\@version);
say to_json(\@version);

指纹:

代码语言:javascript
复制
version: 1.2.3.4
[1,2,3,4]
[1,2,3,4]

我还建议您使用Cpanel::JSON::XS,因为这是一个需要禁止使用的领域!它非常努力地使数据类型正确。还对转换问题进行了一些讨论。

HTH

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65288524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档