各行が表の一行になるか確認する
JSONLはJSON Linesとも呼ばれ、一行ごとに独立した有効なJSON値を置きます。表計算ソフトへ移す場合は、各値が一件の記録を表すオブジェクトで、そのキーを列名にできる形が適しています。この例にはid、name、amountを持つ二件の記録があります。一件目の名前にはカンマ、二件目にはアクセント付きの文字があり、二件目のamountはnullです。単純な英数字だけの試料では見逃しやすい問題を、この小さな例で確認できます。大きなファイルを変換する前に、先頭だけでなく途中や末尾も数行調べてください。配列、単独の数値、入れ子のオブジェクトが混在するなら、どのように平らな列へ整理するか先に決めます。通常のCSV表は任意のJSON構造をそのまま保存できません。比較できるよう、元のJSONLは別に保管します。
JSON配列にまとめてからCSVを作る
例の二行を、このページに埋め込まれた「JSON Linesから配列」ツールへ入力します。元の順序のまま二つのオブジェクトを含む、一つのJSON配列が得られるはずです。その配列を省略せずにコピーし、下にある「JSONからCSV」ツールへ渡します。二段階目の結果はid,name,amountという見出しと二行のデータです。Ana, Ltdのカンマは名前の一部なので、そのセルは引用符で囲まれます。すべてのカンマで単純に分割すると列がずれます。MultiVertoは各記録で見つけたキーを集めて列を作るため、後の記録に新しいキーがあれば列が増え、前の行の該当セルは空になります。入力の全行が同じ構造だと決めつけず、見出しを確認しましょう。途中の空行や閉じていない引用符は、空のデータ行ではなく入力エラーです。
- JSONL:一行に一つのオブジェクト
- JSON配列:二件を一つにまとめる
- CSV:見出しと引用符付きのセル
- Excel:型と行数を確認する
空欄とデータ型の意味を決める
CSVのセルにはJSONの型が残りません。JSONの文字列"001"はCSVでは001というセルになり、数値12.5は12.5、nullは空欄になります。amountというプロパティ自体が存在しない場合も空欄となり、本当に空の文字列とも見分けにくくなります。CSVだけを見て元の三つの状態を復元することはできません。違いが業務上必要なら、書き出す前に状態を示す別の列を追加するか、文書化した目印を決めてください。この変換ツールは入れ子の配列やオブジェクトを拒否します。一つの普通のCSVセルにそれらを表す共通の規則がないためです。必要な属性を明確な名前の列へ展開するか、入れ子の構造を保つ必要があるならJSONLを使い続けます。オブジェクトを黙って文字列化しても、元と同等の表にはなりません。
Excelに読み込む際に列の型を指定する
作成したCSVをUTF-8のテキストとして保存し、Excelの[データ]から[テキストまたはCSVから]を使って読み込みます。区切り文字と文字のプレビューを見て、Zoëが正しく表示されることを確かめます。id列は読み込み前にテキスト型を指定します。自動変換に任せると001が数値の1になり、先頭のゼロが消える場合があります。長い口座番号や日付に見えるコードも、識別子なら文字列として扱います。プレビューで三列と二件のデータ行があるか確認し、最初と最後の記録を元のJSONLと照合してください。地域設定によって小数点や区切り文字の解釈が変わることもあります。受け取り先がセミコロン区切りを要求するなら、JSONLの解析とは別の手順として変換方法を記録します。表示だけの変化と元データの変化を区別できるよう、原本を残しましょう。
件数を照合し、信頼できないセルに注意する
入力の行数、JSON配列の要素数、CSVの見出しを除いたデータ行数を数えます。この例ではいずれも二件になるはずです。idの001が文字列のままか、Ana, Ltdが一つのセルか、Zoëの文字が欠けていないか、空のamountに期待した意味があるかを調べます。「CSVからJSON」ツールで列を再確認できますが、戻る値は文字列であり、数値やnullの型は自動では復元されません。利用者など信頼できない出所の記録を扱うときは、表計算ソフトが数式として解釈し得るセルを、ファイルを開く前に確認してください。CSVの引用符はフィールドの区切りを正しくする仕組みで、数式への対策を完成させるものではありません。受け取り側の安全な読み込み規則に従い、繰り返す作業では列、型、文字コード、想定件数を記録しておきます。