У нас есть большая кодовая база, которая широко использует API JSON v1:
use JSON;
my $json = objToJson($data);
my $data = jsonToObj($json);
Мы хотели бы перейти на JSON v2, чтобы мы могли начать использовать его в новом коде, а также потому, что мы сталкивались с другими модулями, которые зависят от v2 API .
Однако, если я сохранил строку utf8, созданную objToJson()
, она больше не будет декодироваться таким же образом с помощью JSON :: XS (именно это JSON v2 использует за кулисами ).
use JSON;
use JSON::XS;
use warnings;
use strict;
my $data = ["\x{263a}b"];
my $encoded = JSON::objToJson($data);
print "different!\n"
unless JSON::jsonToObj($encoded)->[0] eq JSON::XS::decode_json($encoded)->[0];
print "different!\n"
unless JSON::jsonToObj($encoded)->[0] eq JSON::XS->new->decode($encoded)->[0];
Есть ли какой-нибудь способ для нас перейти на JSON v2, но все же оставить API v1 для обратной совместимости с существующим кодом?