| | 1 | |
|
| | 2 | | """ |
| | 3 | | _column_to_pointer{T}(p::Pointer) |
| | 4 | |
|
| | 5 | | construct JSONPointer.Pointer with specified type |
| | 6 | | """ |
| | 7 | | function _column_to_pointer(token_string::AbstractString)::Pointer |
| 460 | 8 | | if !startswith(token_string, JSONPointer.TOKEN_PREFIX) |
| 15 | 9 | | token_string = "/" * token_string |
| | 10 | | end |
| 230 | 11 | | if endswith(token_string, "}") |
| 18 | 12 | | x = split(token_string, "{") |
| 18 | 13 | | p = Pointer(x[1]) |
| 18 | 14 | | T = jsontype_to_juliatype(x[2][1:end-1]) |
| | 15 | |
|
| 18 | 16 | | return Pointer{Array{T, 1}}(p.tokens) |
| | 17 | | else |
| 212 | 18 | | return Pointer(token_string) |
| | 19 | | end |
| | 20 | | end |
| | 21 | |
|
| | 22 | | function jsontype_to_juliatype(t) |
| 18 | 23 | | if t == "string" |
| 3 | 24 | | return String |
| 15 | 25 | | elseif t == "number" |
| 7 | 26 | | return Float64 |
| | 27 | | # JSON does not have distinct types for integers and floating-point values |
| | 28 | | # but Excel does, and distinguishing integer is useful for many things. |
| 8 | 29 | | elseif t == "integer" |
| 8 | 30 | | return Int |
| 0 | 31 | | elseif t == "object" |
| 0 | 32 | | return OrderedCollections.OrderedDict{String,Any} |
| 0 | 33 | | elseif t == "array" |
| 0 | 34 | | return Vector{Any} |
| 0 | 35 | | elseif t == "boolean" |
| 0 | 36 | | return Bool |
| 0 | 37 | | elseif t == "null" |
| 0 | 38 | | return Missing |
| | 39 | | else |
| 0 | 40 | | error( |
| | 41 | | "You specified a type that JSON doesn't recognize! Instead of " * |
| | 42 | | "`::$t`, you must use one of `::string`, `::number`, " * |
| | 43 | | "`::object`, `::array`, `::boolean`, or `::null`." |
| | 44 | | ) |
| | 45 | | end |
| | 46 | | end |