I can unequivocally say that what choroba has there works properly. Here's an actual working example I just tested (with some name/data modifications):
use warnings;
use strict;
use LWP::UserAgent;
use JSON;
my $ua = LWP::UserAgent->new;
my $body_content = {
token => 'NTE2M2Q3YmFmMGEzNjEzMGQyZmFmYmViNGEasdfmNzkzMTE3NzI3MWMz
+MDhkZjliYWE3NTI1OTg1MDQwNjNlZg'
};
my $resp = $ua->post(
'https://my.server.com',
'Content-Type' => 'application/json',
'Content' => encode_json $body_content
);
print $resp->decoded_content;