『CSV++』フォーマットの提案仕様について

コンマ区切りのデータフォーマットであるCSV (Comma-Separated Values)に、階層構造を追加する『CSV++』という拡張仕様がIETFで提案されています。

www.ietf.org

この仕様は、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