MCPcopy Create free account
hub / github.com/bcicen/jstream / any

Method any

decoder.go:183–241  ·  view source on GitHub ↗

any used to decode any valid JSON value, and returns an interface{} that holds the actual data

()

Source from the content-addressed store, hash-verified

181// any used to decode any valid JSON value, and returns an
182// interface{} that holds the actual data
183func (d *Decoder) any() (interface{}, ValueType, error) {
184 c := d.cur()
185
186 switch c {
187 case '"':
188 i, err := d.string()
189 return i, String, err
190 case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
191 i, err := d.number()
192 return i, Number, err
193 case '-':
194 if c = d.next(); c < '0' && c > '9' {
195 return nil, Unknown, d.mkError(ErrSyntax, "in negative numeric literal")
196 }
197 n, err := d.number()
198 if err != nil {
199 return nil, Unknown, err
200 }
201 return -n, Number, nil
202 case 'f':
203 if d.remaining() < 4 {
204 return nil, Unknown, d.mkError(ErrUnexpectedEOF)
205 }
206 if d.next() == 'a' && d.next() == 'l' && d.next() == 's' && d.next() == 'e' {
207 return false, Boolean, nil
208 }
209 return nil, Unknown, d.mkError(ErrSyntax, "in literal false")
210 case 't':
211 if d.remaining() < 3 {
212 return nil, Unknown, d.mkError(ErrUnexpectedEOF)
213 }
214 if d.next() == 'r' && d.next() == 'u' && d.next() == 'e' {
215 return true, Boolean, nil
216 }
217 return nil, Unknown, d.mkError(ErrSyntax, "in literal true")
218 case 'n':
219 if d.remaining() < 3 {
220 return nil, Unknown, d.mkError(ErrUnexpectedEOF)
221 }
222 if d.next() == 'u' && d.next() == 'l' && d.next() == 'l' {
223 return nil, Null, nil
224 }
225 return nil, Unknown, d.mkError(ErrSyntax, "in literal null")
226 case '[':
227 i, err := d.array()
228 return i, Array, err
229 case '{':
230 var i interface{}
231 var err error
232 if d.objectAsKVS {
233 i, err = d.objectOrdered()
234 } else {
235 i, err = d.object()
236 }
237 return i, Object, err
238 default:
239 return nil, Unknown, d.mkError(ErrSyntax, "looking for beginning of value")
240 }

Callers 3

emitAnyMethod · 0.95
objectMethod · 0.95
objectOrderedMethod · 0.95

Calls 9

stringMethod · 0.95
numberMethod · 0.95
mkErrorMethod · 0.95
arrayMethod · 0.95
objectOrderedMethod · 0.95
objectMethod · 0.95
curMethod · 0.80
nextMethod · 0.80
remainingMethod · 0.80

Tested by

no test coverage detected