Lines Matching refs:json
47 # serialization format with a direct mapping to JSON.
49 # In its essence, a JSON parser is provided, which can convert a JSON
50 # string into a Tcllib json style dictionary (dicts and arrays mixed),
54 # Finally, TON can be converted into (unformatted) JSON.
62 proc ton::json2ton json {
63 # Parse JSON string json
67 set i [trr $json [string length $json]]
69 lassign [jscan $json $i] i ton
70 if {[set i [trr $json $i]]} {
71 error "json string invalid:[incr i -1]: left over characters."
84 proc ton::jscan {json i {d :}} {
85 # Scan JSON in first i characters of string json.
89 # - remaining characters in json
96 if {[set c [string index $json $i]] eq "\""} {
97 str $json [incr i -1]
99 obj $json $i
101 arr $json $i
103 lit $json $i
105 num $json $i $c $d
107 error "json string end invalid:$i: ..[string range $json $i-10 $i].."
110 proc ton::num {json i c d} {
111 # Parse number from position i in string json to the left.
121 if {[string match $d [set c [string index $json $i-1]]]} break
124 set num [string trimleft [string range $json $i $j]]
133 proc ton::lit {json i} {
134 # Parse literal from position i in string json to the left
139 if {[set c [string index $json $i-1]] eq "u"} {
146 set e [string range $json $i-3 $i]
150 proc ton::str {json i} {
151 # Parse string from position i in string json to the left
157 set i [string last \" $json $i]
158 if {[string index $json $i-1] ne "\\"} break
161 error "json string start invalid:$i: exhausted while parsing string."
163 list $i "s [list [string range $json $i+1 $j]]"
165 proc ton::arr {json i} {
166 # Parse array from i characters in string json
171 set i [trr $json $i]
173 error "json string invalid:0: exhausted while parsing array."
175 if {[string index $json $i-1] eq "\["} {
180 lassign [jscan $json $i "\[,\[]"] i v
182 set i [trr $json $i]
184 if {[set c [string index $json $i]] eq ","} {
185 set i [trr $json $i]
188 error "json string invalid:$i: parsing array."
193 proc ton::obj {json i} {
194 # Parse array from i character in string json
199 set i [trr $json $i]
201 error "json string invalid:0: exhausted while parsing object."
203 if {[string index $json $i-1] eq "\{"} {
208 lassign [jscan $json $i] i v
209 set i [trr $json $i]
211 if {[string index $json $i] ne ":"} {
212 error "json string invalid:$i: parsing key in object."
214 set i [trr $json $i]
215 lassign [jscan $json $i] i k
218 error "json string invalid:[incr i -1]: key not a string."
221 set i [trr $json $i]
223 if {[set c [string index $json $i]] eq ","} {
224 set i [trr $json $i]
227 error "json string invalid:$i: parsing object."
287 namespace eval ton::2json {