By definition, everything in a computer is a string of bytes, even text
All kidding aside, a block has a serialized byte format. It is not transmitted over the network in JSON. The JSON output that you get from Bitcoin Core is merely something that is human readable. That is not actually how blocks are transmitted over the network.
The block format is just bytes with bytes at certain positions having specific meanings, as defined by the format. You can see the hexadecimal representation of these bytes if you call
getblock with verbosity level 0 (i.e.
getblock <hash> 0).
A block is not a script. Scripts are part of transactions and are in a specific field for scripts only.