MCPcopy Create free account
hub / github.com/araddon/qlbridge / ParseJsonArray

Function ParseJsonArray

rel/parse_sql.go:2190–2252  ·  view source on GitHub ↗
(pg expr.TokenPager)

Source from the content-addressed store, hash-verified

2188}
2189
2190func ParseJsonArray(pg expr.TokenPager) ([]interface{}, error) {
2191 if pg.Cur().T != lex.TokenLeftBracket {
2192 return nil, pg.ErrMsg("Expected json [")
2193 }
2194
2195 la := make([]interface{}, 0)
2196 pg.Next() // Consume [
2197 for {
2198 //u.Debug(pg.Cur())
2199 switch pg.Cur().T {
2200 case lex.TokenValue:
2201 la = append(la, pg.Cur().V)
2202 pg.Next()
2203 case lex.TokenBool:
2204 bv, err := strconv.ParseBool(pg.Cur().V)
2205 if err != nil {
2206 return nil, err
2207 }
2208 la = append(la, bv)
2209 pg.Next()
2210 case lex.TokenInteger:
2211 iv, err := strconv.ParseInt(pg.Cur().V, 10, 64)
2212 if err != nil {
2213 return nil, err
2214 }
2215 la = append(la, iv)
2216 pg.Next()
2217 case lex.TokenFloat:
2218 fv, err := strconv.ParseFloat(pg.Cur().V, 64)
2219 if err != nil {
2220 return nil, err
2221 }
2222 la = append(la, fv)
2223 pg.Next()
2224 case lex.TokenLeftBrace: // {
2225 obj := make(u.JsonHelper)
2226 if err := ParseJsonObject(pg, obj); err != nil {
2227 return nil, err
2228 }
2229 la = append(la, obj)
2230 case lex.TokenLeftBracket: // [
2231 list, err := ParseJsonArray(pg)
2232 if err != nil {
2233 return nil, err
2234 }
2235 //u.Debugf("list after: %#v", list)
2236 la = append(la, list)
2237 case lex.TokenRightBracket:
2238 return la, nil
2239 default:
2240 return nil, pg.ErrMsg("Expected json key identity")
2241 }
2242 switch pg.Cur().T {
2243 case lex.TokenComma:
2244 pg.Next()
2245 case lex.TokenRightBracket:
2246 pg.Next() // Consume the right ]
2247 return la, nil

Callers 1

parseJsonKeyValueFunction · 0.85

Calls 4

ParseJsonObjectFunction · 0.85
CurMethod · 0.65
ErrMsgMethod · 0.65
NextMethod · 0.65

Tested by

no test coverage detected