1use strict; 2use warnings; 3use Test::More; 4use HTTP::Entity::Parser::JSON; 5use Hash::MultiValue; 6use utf8; 7 8my $parser = HTTP::Entity::Parser::JSON->new(); 9$parser->add('{'); 10$parser->add('"hoge":["fuga","hige","\u306b\u307b\u3093\u3054"],'); 11$parser->add('"moji":{"kanji":{"ji":"\u5b57"}},'); 12$parser->add('"\u306b\u307b\u3093\u3054":"\u65e5\u672c\u8a9e",'); 13$parser->add('"shallow":[{"deeper": "sunk"}],'); 14$parser->add('"moge":"muga"'); 15$parser->add('}'); 16 17my ($params, $uploads) = $parser->finalize(); 18is_deeply(Hash::MultiValue->new(@$params)->as_hashref_mixed, 19 +{ 20 'hoge' => [ 'fuga', 'hige', Encode::encode_utf8('にほんご') ], 21 'moge' => 'muga', 22 'moji' => { 'kanji' => { 'ji' => Encode::encode_utf8('字') } }, 23 'shallow' => [ { 'deeper' => 'sunk' } ], 24 Encode::encode_utf8('にほんご') => Encode::encode_utf8('日本語'), 25 }); 26is_deeply $uploads, []; 27 28done_testing; 29 30