Dictionary 在clojure中创建词典
我想创建一个已知键和未知变量量的json表示:Dictionary 在clojure中创建词典,dictionary,clojure,key,Dictionary,Clojure,Key,我想创建一个已知键和未知变量量的json表示: (defn test1 [var1 & var2] (print json/write-str :key1 var1 var2)) (defn -main [& args] (test1 "key1_val" {:key2 "val2" :key3 "val3"})) 它返回以下内容: :key1 key1_val ({:key2 val2, :key3 val3}) 我希望它是一本单独的字典。我想知道,返回的方法
(defn test1 [var1 & var2]
(print json/write-str :key1 var1 var2))
(defn -main [& args]
(test1 "key1_val" {:key2 "val2" :key3 "val3"}))
它返回以下内容:
:key1 key1_val ({:key2 val2, :key3 val3})
我希望它是一本单独的字典。我想知道,返回的方法真的是我想要的吗?我想不是因为第二部分在括号里 (打印json/write str:key1 var1 var2)
这将打印json/write str
的函数值,后跟每个键的值。在clojure中,如果要运行函数,则必须应用它,这通常是通过将其包装在括号中来实现的
接下来,write str
接受多个参数,但唯一转换为json的参数是第一个,因此需要将数据包装到数据结构中
我不确定您是否真的希望数据结构化,但我认为类似这样的东西更接近:
(json/write str{:key1[var1 var2]})
另外,作为一个小提示,代码没有返回
:key1key1val({:key2val2,:key3val3})
,它打印了字符串“:key1key1val({:key2val2,:key3val3})”,并返回nil
,因为println总是返回nil
,我的目标是获得“{key1:val1,key2:val2,key3:val3}”。您的解决方案返回“{:key1>[key1_val({:key2 val2,:key3 val3})]}在我的示例中,“var2”在这里[var1&var2]
是字典类型,var1是字符串(参数列表[var1&var2]中的键“key1_val”的值)
var2保证永远不会是字典。它将是一个列表。这就是&
所做的。那么如何将它转换为字典呢?一种方法是使用[var1 var2]
作为参数列表。