Вопрос неверный. В стиле анекдота "у таракана уши в ногах".
Разумеется,
сервер всё прекрасно видит.
чтобы РНР принял null, надо отправить на сервер null. Удивительно, но факт.
var_dump(json_decode('{
"name": ["i", "b"],
"val": [null]
}',1));
А вот что там делает код на этом сервере - никто не знает.
И обращаться надо к автору кода. А не в Спортлото
Скорее всего там либо array_filter, либо isset/empty($array['val']);