我在程序中使用JSON::Any在客户端和服务器之间传输哈希值。
我遇到一个问题,我想查找文本(由客户端发送)是普通文本还是JSON编码文本。
任何人都可以告诉我如何找到,
没有检查,我在服务器端出现了一些错误,它已关闭。
答案 0 :(得分:4)
如果没有检查,你就无法做到。最简单的方法是只进行解码然后处理异常。
use JSON::Any;
use Try::Tiny;
my $perl_data;
for my $perhaps_json (
q(this won't decode), q({"how":"ever", "this":"will"}),
) {
try {
$perl_data = JSON::Any->jsonToObj($perhaps_json);
} catch {
warn "decoding failed: $_\n";
}
}
say "Even with invalid input, I did not crash!";
__END__
decoding failed: 'true' expected, at character offset 0 (before "this won't decode") at .../lib/perl5/site_perl/5.10.1/JSON/Any.pm line 529.
Even with invalid input, I did not crash!
答案 1 :(得分:1)
好吧,如果您要在HTTP消息中发送JSON,那么您应该使用正确的JSON MIME type。收到请求后,请检查MIME类型。发送响应时,请设置正确的MIME类型。
如果用户代理正在使用text/plain
来处理所有内容,那么您仍然会遇到daxim's 'try it and see' method。