JSONでの末尾カンマ RDB保存時には注意
本日は、JSONネタである。
JSONで配列を記述することができる。
こんな感じである。
var json_array = [1,2,3,4,5];
JavaScript ≒ Java ≒ C/C++
なので、C言語で配列を定義するのと同じ感じ。C言語では{}を使うけど。
int c_array[5] = {1,2,3,4,5};
JSONで良いところは、最後がカンマで終わっていても良いところ。配列要素が増えるということはよくあることなので、最後にカンマを書いておくと、変なSyntaxエラーに悩まされなくて済む。
var json_array = ['one', 'two', 'three', 'four', 'five', // ここにカンマを書いていてもOK ]; var json_array = ['one', 'two', 'three', 'four', 'five', 'six', // 上の'five'をコピってこの行を作れる。 ];
C/C++でも余計にカンマ書いてもOK。
int c_array[5] = {1, 2, 3, 4, 5, };
SQLでは最後にカンマがあるとSyntaxエラーになる。SELECT句でよくやってしまう間違い。
select one, two, three, four, five, from number
って書くと悲しいかなエラーになってしまう。
列が増えることを念頭に「カンマを先に書く」というお作法もある。例えばこんな感じ。
select one ,two ,three ,four ,five from number
これなら、,fiveをコピって,sixを作れる。
select one ,two ,three ,four ,five ,six from number
でもなんか変。カンマは列名の後にきてないと違和感がある。最初のoneを改行するとさらに変になる。
select one ,two ,three ,four ,five from number
oneだけ浮いてる。
JSONはカンマ書いてあっても大丈夫なので、きれいに書ける。
var json_array = [ 'one', 'two', 'three', 'four', 'five', ];
ほらね。
まぁ「カンマの位置なんてどうでもいいよ」という人にはどうでもいい話なのではあるが...
ただし、最後の余計なカンマは古いブラウザや正式なJSONではエラーになるので注意されたし。
RDBのJSON型に突っ込む場合もエラーになることもあるので注意。
正式なJSON
正式なJSONと聞いて「はて?」と思われた方もいるかと。
「正式な」というよりかは、「厳密な」と言った方が良いかも。
最後の余計なカンマを付けると、厳密にいうと正式なJSONデータにはならないので、JSON.parseできない。データベースのJSON型にも保存することができない。
Postgresでやってみると...
ERROR: invalid input syntax for type json
ほら、怒られた。テーブルfooはJSON型の列をひとつだけ持っている。
エラーの原因はJSONのsyntaxエラーである。5の後のカンマね。それを取るとエラーにはならない。
INSERT 0 1
厳密に正しいJSONデータになるので、保存できる。
あと、連想配列のフィールド名(キー)となる部分は、"で囲む必要がある。上記の例は配列なので、でてきていないが、連想配列を保存させたい場合は注意しないといけない。
ERROR: invalid input syntax for type json
DETAIL: Token "name" is invalid.
nameはダメで、"name"としなければならない。同様に、ageも"age"にする。
INSERT 0 1
ほらね。
SQLとJSON JSONデータをRDBに格納する
分析関数percentile_cont 中央値でノイズ除去
SQL分析関数 ROW_NUMBER RANK DENSE_RANK
SQL分析関数 FIRST_VALUE LAST_VALUE NTH_VALUE LAG LEAD
SQL分析関数 PERCENT_RANK パーセンタイル
SQL分析関数 PERCENTILE_CONT PERCENTILE_DISC
SQL分析関数 CUME_DISTとCOUNT OVER SQLポケリ
WITH 再帰クエリ その2
投稿者プロフィール

最新の投稿
コンピューター関係の記事2025年4月26日アイキャッチ画像にSQLアイコンとJSONアイコンが欲しい
コンピューター関係の記事2025年4月23日AdSense審査に無事パス
コンピューター関係の記事2025年4月22日SSブログ復活
コンピューター関係の記事2025年4月22日SSブログが無くなった余波は大きい