在 clojure 中创建字典

Create a dictionary in clojure

我想创建一个 json 表示一个已知密钥和可变数量的未知:

(defn test1 [var1 & var2]
  (print json/write-str :key1 var1 var2))

(defn -main [& args]
  (test1 "key1_val" {:key2 "val2" :key3 "val3"}))

它returns这个:

  :key1 key1_val ({:key2 val2, :key3 val3})

我希望它是一本字典。我想知道,方法返回的内容真的是我要找的吗?我认为不是,因为第二部分在括号中。

(print json/write-str :key1 var1 var2)

这会打印 json/write-str 的函数值,后跟每个键的值。在 clojure 中,如果你想要一个 运行 的函数,你必须应用它,这通常是通过将它括在括号中来完成的。

接下来,write-str需要多个arg,但是唯一变成json的arg是第一个,所以你需要把你的数据包装在一个数据结构中。

我不确定您真正想要的数据结构,但我认为像这样的更接近:

(json/write-str {:key1 [var1 var2]})

此外,作为一个小注释,代码没有 return :key1 key1_val ({:key2 val2, :key3 val3}),它打印了字符串 ":key1 key1_val ({:key2 val2, :key3 val3}) ",并且 returned nil,因为 println 总是 returns nil