Tukubaiオンラインコマンドマニュアル - wjson(1)

wjson(1)

【名前】

wjson : フィールド形式ファイルを JSON 形式に変換する

【書式】

Usage   : wjson [-p<c>][-m<c>][-s<c>][-n<string>] [<field-file>]
          --null
          --truefalse
Version : Thu Oct 27 16:32:20 JST 2022
Edition : 2

【説明】

フィールド形式ファイル <field-file> を JSON 形式(RFC8259)に変換します。

キー部の項目はデフォルトで"."で区切られますが、値が数字の時は、リストの項番を意味し、それ以外(文字列)の時は、オブジェクトのキー名を意味します。キー部の階層構造に従い、フィールド形式のファイルを JSON 形式に変換します。

【オプション】

-p: キー部の区切り文字を変更します。デフォルトは"."です。

-m: キー部において半角空白で出力する文字を変更します。デフォルトは"_"です。

-s: 値部において半角空白で出力する文字を変更します。デフォルトは"_"です。

-n: 値部において空文字列として出力する文字列を変更します。デフォルトは"_"です。

--null: 空文字列の出力を、ヌル値に変更します。ダブルクォーテーションで 囲まれない null が出力されます。

--truefalse: 文字列 "true" の出力を true に、文字列 "false" の出力を false に 変更します。ダブルクォーテーションでは囲まれません。

【備考】

値に含まれる以下の文字はエスケープされます。

ダブルクォーテーション(") → \"

バックスラッシュ(\) → \\

【例1】

$ cat fielddata
1.name Alice_Brown
1.sku 54321
1.price 199.95
1.shipTo.name Bob_Brown
1.shipTo.address 456_Oak_Lane
1.shipTo.city Pretendville
1.shipTo.state _
1.shipTo.zip 98999
1.billTo.name Alice_Brown
1.billTo.address 456_Oak_Lane
1.billTo.city Pretendville
1.billTo.state HI
1.billTo.zip 98999
2.name Donald_Tramp
2.sku 24680
2.price 153.32
2.shipTo.name Kim_Jonil
2.shipTo.address 123_Hidroask
2.shipTo.city Pyonyan
2.shipTo.state NK
2.shipTo.zip 10012
2.billTo.name Donald_Tramp
2.billTo.address 456_Oak_Lane
2.billTo.city Pretendville
2.billTo.state HI
2.billTo.zip 98999
$ wjson < fielddata
[{"name":"Alice Brown","sku":"54321","price":"199.95","shipTo":{"name":"Bob Brown","address":"456 Oak Lane","city":"Pretendville","state":"","zip":"98999"},"billTo":{"name":"Alice Brown","address":"456 Oak Lane","city":"Pretendville","state":"HI","zip":"98999"}},{"name":"Donald Tramp","sku":"24680","price":"153.32","shipTo":{"name":"Kim Jonil","address":"123 Hidroask","city":"Pyonyan","state":"NK","zip":"10012"},"billTo":{"name":"Donald Tramp","address":"456 Oak Lane","city":"Pretendville","state":"HI","zip":"98999"}}]

【例2】

$ cat fielddata2
1.1 a
1.2 b
2.1 c
2.2 d
$ wjson fielddata2
[["a","b"],["c","d"]]

【例3】

$ cat fielddata3
year 2013
title Turn_It_Down,_Or_Else!
info.directors.1 Alice_Smith
info.directors.2 Bob_Jones
info.release_date 2013-01-18T00:00:00Z
info.rating 6.2
info.genres.1 Comedy
info.genres.2 Drama
info.image_url http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg
info.plot A_rock_band_plays_their_music_at_high_volumes,_annoying_the_neighbors.
info.rank 11
info.running_time_secs 5215
info.actors.1 David_Matthewman
info.actors.2 Ann_Thomas
info.actors.3 Jonathan_G._Neff

第1引数にファイルのパスを与える。

$ wjson fielddata3
{"year":"2013","title":"Turn It Down, Or Else!","info":{"directors":["Alice Smith","Bob Jones"],"release date":"2013-01-18T00:00:00Z","rating":"6.2","genres":["Comedy","Drama"],"image url":"http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@. V1 SX400 .jpg","plot":"A rock band plays their music at high volumes, annoying the neighbors.","rank":"11","running time secs":"5215","actors":["David Matthewman","Ann Thomas","Jonathan G. Neff"]}}

【例4】

$ cat fielddata
data1 null
data2 _
data3 _
data4 true
data5 false
data6 0.000000000000000000000000000000000662607
$ wjson fielddata
{"data1":"null","data2":"","data3":"","data4":"true","data5":"false","data6":"0.000000000000000000000000000000000662607"}

--truefalseオプション を用いると文字列型ではなく真偽値として表記する。

$ wjson --null --truefalse fielddata
{"data1":"null","data2":null,"data3":null,"data4":true,"data5":false,"data6":"0.000000000000000000000000000000000662607"}

-nオプションにつづけて空の文字列を代替するラベルを指定する。

$ wjson -nnull --null --truefalse fielddata
{"data1":null,"data2":" ","data3":" ","data4":true,"data5":false,"data6":"0.000000000000000000000000000000000662607"}

【関連項目】

rjson(1)

Last modified: 2022-11-21 11:13:40