Introduction
Introduction Statistics Contact Development Disclaimer Help
json2tsv.1 - json2tsv - JSON to TSV converter
git clone git://git.codemadness.org/json2tsv
Log
Files
Refs
README
LICENSE
---
json2tsv.1 (3531B)
---
1 .Dd April 17, 2023
2 .Dt JSON2TSV 1
3 .Os
4 .Sh NAME
5 .Nm json2tsv
6 .Nd convert JSON to TSV or separated output
7 .Sh SYNOPSIS
8 .Nm
9 .Op Fl n
10 .Op Fl r
11 .Op Fl u
12 .Op Fl F Ar fs
13 .Op Fl R Ar rs
14 .Sh DESCRIPTION
15 .Nm
16 reads JSON data from stdin.
17 It outputs each JSON type to a TAB-Separated Value format per line.
18 .Pp
19 The options are as follows:
20 .Bl -tag -width Ds
21 .It Fl n
22 Show the indices for array types (by default off).
23 .It Fl r
24 Show all control-characters (by default off).
25 .It Fl u
26 Unbuffered: flush output after printing each value (by default off).
27 .It Fl F Ar fs
28 Use
29 .Ar fs
30 as the field separator.
31 The default is a TAB character.
32 .It Fl R Ar rs
33 Use
34 .Ar rs
35 as the record separator.
36 The default is a newline character.
37 .El
38 .Sh SEPARATOR CHARACTERS
39 The
40 .Ar fs
41 or
42 .Ar rs
43 separators can be specified in the following formats:
44 .Pp
45 .Bl -item -compact
46 .It
47 \e\e for a backslash character.
48 .It
49 \en for a newline character.
50 .It
51 \er for a carriage return character.
52 .It
53 \et for a TAB character.
54 .It
55 \exXX for a character specified in the hexadecimal format as XX.
56 .It
57 \eNNN for a character specified in the octal format as NNN.
58 .El
59 .Pp
60 Otherwise: if a single character is specified this character will be use…
61 If more than one character is specified it will be parsed as a number us…
62 format supported by
63 .Xr strtol 3
64 with base set to 0 and this character is the index in the ASCII table.
65 .Sh OUTPUT FORMAT
66 The output format per node is:
67 .Bd -literal
68 nodename<FIELD SEPARATOR>type<FIELD SEPARATOR>value<RECORD SEPARATOR>
69 .Ed
70 .Pp
71 Control-characters such as a newline, TAB and backslash (\en, \et and \e…
72 escaped in the nodename and value fields unless a
73 .Fl F
74 or
75 .Fl R
76 option is specified.
77 .Pp
78 When the
79 .Fl F
80 or
81 .Fl R
82 option is specified then the separator characters are removed from the o…
83 TABs or newlines are printed unless they are set as a separator.
84 Other control-characters are removed, unless the option
85 .Fl r
86 is set.
87 .Pp
88 The type field is a single byte and can be:
89 .Pp
90 .Bl -item -compact
91 .It
92 a for array
93 .It
94 b for bool
95 .It
96 n for number
97 .It
98 o for object
99 .It
100 s for string
101 .It
102 ? for null
103 .El
104 .Sh EXIT STATUS
105 .Nm
106 exits with the exit status 0 on success, 1 on a parse error, 2 when out …
107 memory or a read/write error or 3 with an usage error.
108 .Sh EXAMPLES
109 .Bd -literal
110 json2tsv < input.json | awk -F '\et' '$1 == ".url" { print $3 }'
111 .Ed
112 .Pp
113 To filter without having to unescape characters the
114 .Fl F
115 and
116 .Fl R
117 options can be used.
118 In the example below it uses the ASCII character 0x1f (Unit Separator) a…
119 field separator and the ASCII character 0x1e (Record Separator) as the r…
120 separator.
121 Additionally the
122 .Fl r
123 option is used so control-characters are printed.
124 .Bd -literal
125 json2tsv -r -F '\ex1f' -R '\ex1e' < input.json | \e
126 awk '
127 BEGIN {
128 FS = "\ex1f"; RS = "\ex1e";
129 }
130 $1 == ".url" {
131 print $3;
132 }'
133 .Ed
134 .Pp
135 The example can be simplified using the convenience wrapper shellscript
136 .Xr jaq 1
137 .Bd -literal
138 jaq '$1 == ".url" { print $3 }' < input.json
139 .Ed
140 .Sh SEE ALSO
141 .Xr awk 1 ,
142 .Xr jaq 1
143 .Sh AUTHORS
144 .An Hiltjo Posthuma Aq Mt [email protected]
145 .Sh CAVEATS
146 .Bl -item
147 .It
148 Characters in object keys such as a dot or brackets are not escaped in t…
149 output, this can change the meaning of the nodename field.
150 .It
151 The JSON parser handles all valid JSON.
152 It also allows some invalid JSON extensions: it does not do a complete
153 validation on numbers and is not strict with handling unicode input.
154 See also RFC 8259 section 9. Parsers.
155 .It
156 The maximum depth of objects or arrays is hard-coded to 64 levels deep.
157 .El
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.