我想知道是否有人知道为什么这次回归是CGI::Application::Plugin::JSON
sub {
my ($self) = @_;
my $q = $self->query;
return $self->json_body({ result => '1', message => 'I should be AFTER result'} );
}
输出如下:
{"message":"I should be AFTER result","result":"1"}
我认为它会从键/值对中从左到右格式化JSON,并且记住它将向后退好是可以的,但我有很多返回要处理,并且客户端的验证是通过'结果'值因此,如果我只是遗漏了一些东西,我想让它输出就像输入一样。
修改:
另外我只是注意到它没有返回JSON布尔类型对象,因为"result":"1"
将反序列化为sting对象而不是JSON布尔值。有没有办法让它输出"result":1
感谢您为此提供的任何帮助。
答案 0 :(得分:1)
我认为它会从键/值对
左右格式化JSON
您将分配给散列的列表与散列本身混淆。哈希没有左右两个;他们有一系列链表。
您将获得在哈希中找到元素的顺序。只要您使用哈希,就无法控制该顺序。
如果你确实需要按特定顺序排列字段(这可能很奇怪),你可以尝试使用看似哈希的东西,但要记住插入顺序(如Tie::IxHash)。
记住它会倒退是好的
它们不仅不“倒退”,订单甚至无法预测。
$ perl -MJSON -E'say encode_json {a=>1,b=>2,c=>3} for 1..3'
{"b":2,"c":3,"a":1}
{"c":3,"a":1,"b":2}
{"a":1,"c":3,"b":2}
有没有办法让它输出
"result":1
result => 1