It is not a design flaw to make a reasonable choice about what data types you support. Especially given the ones captured in JSON are overwhelmingly the most commonly used and necessary types.
In cases where that's not enough, you could roll your own types by putting the values in plain strings and it would still be strictly more expressive than CSV
In cases where that's not enough, you could roll your own types by putting the values in plain strings and it would still be strictly more expressive than CSV