I don't have much experience with webdev and appreciate if someone can give a hand. Suppose I want to read the contents of this URL into a JSON or Tables.jl table:
https://apitempo.inmet.gov.br/estacoes/T
I can get the page with HTTP.jl:
using HTTP
r = HTTP.get("https://apitempo.inmet.gov.br/estacoes/T")
r.body
233853-element Vector{UInt8}:
0x5b
0x7b
0x22
0x43
⋮
0x30
0x22
0x7d
0x5d
How to reinterpret these bits as a JSON or DataFrame directly?
Would you recommend using Gumbo.jl for this task or HTTP.jl suffices?
I can convert the body to a string with String(r.body)
, but how to convert the string into a JSON or table?
Oh nevermind, JSON.parse on the resulting string just works :tada:
If you use JSON3, you can also do JSON3.read(bytes)
to avoid constructing the string first. JSON3 also does clever things to reuse the memory of the bytes themselves and expose nice Julia objects on top of that memory. (But this probably only matters for massive files or if you are processing many of them).
for what is worth, you can download files in-memory also with Downloads.jl
(which is now a stdlib, so don't even need to use third-party packages):
julia> using Downloads
julia> take!(Downloads.download("https://apitempo.inmet.gov.br/estacoes/T", IOBuffer()))
233857-element Vector{UInt8}:
0x5b
0x7b
0x22
0x43
0x44
0x5f
0x4f
0x53
0x43
0x41
0x52
0x22
0x3a
0x22
0x30
⋮
0x30
0x30
0x2e
0x30
0x30
0x30
0x2d
0x30
0x33
0x3a
0x30
0x30
0x22
0x7d
0x5d
Last updated: Nov 06 2024 at 04:40 UTC