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

Function parseJsonKeyValue

rel/parse_sql.go:2135–2188  ·  view source on GitHub ↗
(pg expr.TokenPager, jh u.JsonHelper)

Source from the content-addressed store, hash-verified

2133 }
2134}
2135func parseJsonKeyValue(pg expr.TokenPager, jh u.JsonHelper) error {
2136 if pg.Cur().T != lex.TokenIdentity {
2137 return pg.ErrMsg("Expected json key/identity")
2138 }
2139 key := pg.Cur().V
2140 pg.Next()
2141 switch pg.Cur().T {
2142 case lex.TokenColon:
2143 pg.Next()
2144 switch pg.Cur().T {
2145 case lex.TokenLeftBrace: // {
2146 obj := make(u.JsonHelper)
2147 if err := ParseJsonObject(pg, obj); err != nil {
2148 return err
2149 }
2150 jh[key] = obj
2151 case lex.TokenLeftBracket: // [
2152 list, err := ParseJsonArray(pg)
2153 if err != nil {
2154 return err
2155 }
2156 jh[key] = list
2157 case lex.TokenValue:
2158 jh[key] = pg.Cur().V
2159 pg.Next()
2160 case lex.TokenBool:
2161 bv, err := strconv.ParseBool(pg.Cur().V)
2162 if err != nil {
2163 return err
2164 }
2165 jh[key] = bv
2166 pg.Next()
2167 case lex.TokenInteger:
2168 iv, err := strconv.ParseInt(pg.Cur().V, 10, 64)
2169 if err != nil {
2170 return err
2171 }
2172 jh[key] = iv
2173 pg.Next()
2174 case lex.TokenFloat:
2175 fv, err := strconv.ParseFloat(pg.Cur().V, 64)
2176 if err != nil {
2177 return err
2178 }
2179 jh[key] = fv
2180 pg.Next()
2181 default:
2182 return pg.ErrMsg("Expected json { or [")
2183 }
2184 return nil
2185 default:
2186 return pg.ErrMsg("Expected json colon")
2187 }
2188}
2189
2190func ParseJsonArray(pg expr.TokenPager) ([]interface{}, error) {
2191 if pg.Cur().T != lex.TokenLeftBracket {

Callers 1

ParseJsonObjectFunction · 0.85

Calls 5

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

Tested by

no test coverage detected