我想将字符串形式的Julia字典键转换为整数
JSON3将我的Dictionary的键转换为Strings。我的理解是JSON密钥只是字符串。
using JSON3
a1 = Dict(1 => "one", 2 => "two", 3 => "three")
a1_json = JSON3.write(a1)
"{\"2\":\"two\",\"3\":\"three\",\"1\":\"one\"}"
a2 = JSON3.read(json,Dict{Int64,String})
ERROR: MethodError: no method matching Int64(::String)
有什么办法可以将键保留在Int中吗?
最佳答案
来自JSON3.jl自述文件:
声明我的类型是JSON3.ObjectType()意味着它应该映射到>无序键值对的JSON对象,其中键是Symbol或String,值是任何其他类型(或Any)。
因此,在解析步骤中,如果将数字用作键,则将获得符号。
如此说来,您可以使用以下代码恢复原始字典:
Dict(parse(Int,string(k))=>v for (k,v) in pairs(a2))