我想将字符串形式的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))

10-06 11:44