请注意,您的文件不是有效的JSON(它的行是有效的JSON,而不是整个文件)。
你可以这样做:
julia> using DataFrames, JSON3
julia> df = JSON3.read.(eachline("sample.json")) |> DataFrame;
julia> df.credits = Vector{Float64}.(df.credits);
julia> df.invoice = Dict{Symbol,String}.(df.invoice);
julia> df
3Ã4 DataFrame
â Row â billing_account_id â credits â invoice â cost_type â
â â String â Array{Float64,1} â Dict{Symbol,String} â String â
âââââââ¼âââââââââââââââââââââ¼âââââââââââââââââââââââââââââ¼âââââââââââââââââââââââââ¼ââââââââââââ¤
â 1 â 0139A â 0-element Array{Float64,1} â Dict(:month=>"202003") â regular â
â 2 â 0139A â [1.45] â Dict(:month=>"202003") â regular â
â 3 â 0139A â [2.0, 3.56] â Dict(:month=>"202003") â regular â
上的转换
:credits
和
:invoice
列将使它们成为易于使用的类型(否则它们使用由JSON3.jl内部定义的类型)。
更高级的选项是通过使用
NamedTuple
类型,例如:
julia> df = JSON3.read.(eachline("sample.json"),
NamedTuple{(:billing_account_id, :credits, :invoice, :cost_type),Tuple{String,Vector{Float64},Dict{String,String},String}}) |>
DataFrame
3Ã4 DataFrame
â Row â billing_account_id â credits â invoice â cost_type â
â â String â Array{Float64,1} â Dict{String,String} â String â
âââââââ¼âââââââââââââââââââââ¼âââââââââââââââââââââââââââââ¼ââââââââââââââââââââââââââ¼ââââââââââââ¤
â 1 â 0139A â 0-element Array{Float64,1} â Dict("month"=>"202003") â regular â
â 2 â 0139A â [1.45] â Dict("month"=>"202003") â regular â
â 3 â 0139A â [2.0, 3.56] â Dict("month"=>"202003") â regular â