I think an ideal solution would be csv with json metadata elements as the header. If a program supports the header, then you get the metadata. If not, no big deal, you just get an ugly header.
Perhaps, though maybe something simpler and readable would be easier to get people to use
name::string,number of legs::int,height in meters::float,date of birth::date(MM/DD/YYYY),email adress::email,website::url
joe,2,1.76,12/12/1999,joe@joe.com,https://www.joe.com
bob,1,1.84,12/12/1944,bob@vietnam.com,null