CGI::Application::Plugin::JSON - json_body возвращается назад
Мне было интересно, если бы кто-нибудь знал, почему это возвращение назад с 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 Boolean как "result":"1"
будет десериализован как объект sting, а не как логическое значение JSON. Есть ли способ получить его вывод "result":1
Спасибо за любую помощь, которую я могу получить с этим.
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