コンマ区切りのデータフォーマットであるCSV (Comma-Separated Values)に、階層構造を追加する『CSV++』という拡張仕様がIETFで提案されています。
この仕様は、CSVに階層構造を定義します。既存のCSVパーサーでもパーサーエラーにならず、フラットになってはしまうがパースできるように設計されています。
医療情報フォーマットであるHL7 Version 2.xに影響を受けているそうです。
例
配列構造
キーに [ ] で区切り文字を指定することで、配列となります。
下記は、複数の電話番号・メールアドレスを持つ例です
id,name,phone[|],email[;] 1,John,555-1234|555-5678|555-9012,john@work.com;john@home.com 2,Jane,555-4444,jane@company.com
構造化フィールド
キーに 区切り文字と( )で構造化フィールドを指定できます。
下記は区切り文字^で、緯度経度の地理情報を持つ例です。
id,name,geo^(lat^lon) 1,Location A,34.0522^-118.2437 2,Location B,40.7128^-74.0060
構造化フィールドはネストすることも出来ます。
下記は、位置名と緯度経度を構造として持つ例です
id,location^(name^coords:(lat:lon)) 1,Office^34.05:-118.24 2,Home^40.71:-74.00