sometimes dicts are passed to constructors as `Dict{String,Any}`
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia eseguendo il Julia MWE e seguendo la chiamata al costruttore in StructTypes.jl:267 insieme al percorso di lettura di JSON3 in structs.jl:342. Confronta il modo in cui Outer e Inner ricevono le chiavi del dizionario, quindi verifica che il caso di costruzione annidata segnalato non richieda più costruttori separati per Dict{String,Any} e Dict{Symbol,Any}.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I started out thinking this only happened for nested types, but as I set out to make a MWE, I got even more confused. Here it is
using JSON3, StructTypes
struct Inner
a::Int
end
Inner(dct) = Inner(dct[:a])
StructTypes.StructType(::Type{Inner}) = StructTypes.DictType()
struct Outer
I::Inner
end
Outer(dct) = Outer(dct[:I])
StructTypes.StructType(::Type{Outer}) = StructTypes.DictType()
json = JSON3.write(Dict(:I=>Dict(:a=>1)))
JSON3.read(json, Outer)
gives me
ERROR: LoadError: KeyError: key :I not found
Stacktrace:
[1] getindex at ./dict.jl:467 [inlined]
[2] Outer(::Dict{String,Any}) at /home/expandingman/src/scrap.jl:13 (repeats 2 times)
[3] #construct#2 at /home/expandingman/.julia/packages/StructTypes/CpLmq/src/StructTypes.jl:267 [in
lined]
[4] construct at /home/expandingman/.julia/packages/StructTypes/CpLmq/src/StructTypes.jl:267 [inlin
ed]
[5] read(::StructTypes.DictType, ::Base.CodeUnits{UInt8,String}, ::Int64, ::Int64, ::UInt8, ::Type{
Outer}, ::Type{Symbol}, ::Type{Any}; kw::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),
Tuple{}}}) at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:342
[6] read at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:285 [inlined]
[7] #read#30 at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:279 [inlined]
[8] read at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:279 [inlined]
[9] read(::String, ::Type{Outer}; kw::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tu
ple{}}}) at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl:34
[10] read(::String, ::Type{Outer}) at /home/expandingman/.julia/packages/JSON3/LtYDK/src/structs.jl
:33
[11] top-level scope at /home/expandingman/src/scrap.jl:19
[12] include(::String) at ./client.jl:457
[13] top-level scope at REPL[3]:1
in expression starting at /home/expandingman/src/scrap.jl:19
Usually I would hit this kind of error with Inner where it would try to construct from Dict("a"=>1), I don't know why I suddenly have this problem with the outer one.
As a workaround, it seems that right now one has to define constructors for both Dict{String,Any} and Dict{Symbol,Any} which seems wrong.
- Lingua principale
- Julia
- Stelle
- 86
- Fork
- 21
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaData/StructTypes.jl
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaData/StructTypes.jl#104 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
JuliaData/StructTypes.jl#102 · 1 commento ·
-
Register v1.11.0?Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
JuliaData/StructTypes.jl#98 · 2 commenti · 1 reazione ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 30/100
JuliaData/StructTypes.jl#96 · 1 commento ·
-
`StructTypes.x` is not definedForse già presa @sunoru l’ha presa 1124 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
JuliaData/StructTypes.jl#92 · 3 commenti ·
Tutte le issue di JuliaData/StructTypes.jl
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 2 giorni
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 66/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
JuliaPy/CondaPkg.jl#232 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
SciML/PETScDiffEq.jl#196 ·
I maintainer di solito rispondono entro 1 giorno
-
Two jump tests solve a different problem than the one they buildForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 84/100
SciML/Catalyst.jl#1571 ·
I maintainer di solito rispondono entro 1 giorno