gpt4 book ai didi

json - 为什么 JSON 模块引用了一些数字而不引用其他数字?

转载 作者:行者123 更新时间:2023-12-04 19:55:58 24 4
gpt4 key购买 nike

我们最近切换到新的 JSON2 perl 模块。
我以为现在所有的东西都被引用了。
但是我遇到了一些情况,其中一个数字( 250 )在由 perl 创建的 json 字符串中作为未加引号的数字返回。

出于好奇:
有谁知道为什么存在这种情况以及 json 模块如何决定是否引用一个值?

最佳答案

如果是数字,它将不被引用。在不深入 Perl 内部的情况下,如果它是一个字面数字或算术运算的结果,那么它就是一个数字,并且自从它的数值产生以来它还没有被字符串化。

use JSON::XS;
my $json = JSON::XS->new->allow_nonref;

say $json->encode(42); # 42
say $json->encode("42"); # "42"

my $x = 4;
say $json->encode($x); # 4
my $y = "There are $x lights!";
say $json->encode($x); # "4"
$x++; # modifies the numeric value of $x
say $json->encode($x); # 5

请注意,打印数字并不是“将其字符串化”,即使它会生成要输出的数字的字符串表示形式; print $x不会导致数字成为字符串,而是 print "$x"做。

无论如何,所有这一切都有点奇怪,但是如果您希望在 JSON 中可靠地不引用一个值,那么输入 0 + $value在编码之前立即进入您的结构,如果您希望它被可靠引用,请使用 "" . $value"$value" .

关于json - 为什么 JSON 模块引用了一些数字而不引用其他数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com