json_encode转义字符'<'

i tried to encode character '<' with json_encode() function but the output is always unclosed or unfinished json string.

this is my code:

echo json_encode('<');

the output:

"

i already even tried to use this code:

echo json_encode(array_map('utf8_encode',['<']));

but the output still

{["

but if i tried to encode '<>'

echo json_encode('<>');

the output is just like what i wanted:

"<>"


Please help me Thanks

the fault is not the json_encode or php version. it was the header Content-Encoding , i don't why but the header Content-Encoding is set to gzip.
so the solution i have is to change the header Content-Encoding by adding following code in my .php:

header('Content-Encoding: none');

i found this by inspecting header output in Postman

Thanks for your reply all