Dictionary Clojure:将字符串转换为映射

Dictionary Clojure:将字符串转换为映射,dictionary,clojure,Dictionary,Clojure,您知道一个函数,它接受Clojure字符串并将其转换为映射。例如,如果函数获取字符串 :第一个“约翰”:最后一个“卢卡斯”:伦敦城 它返回一个带有先前键值关系的映射。您可以使用clojure.end/read-string函数进行此操作。它确保没有人向您的系统注入代码,否则将解析clojure数据结构。在“{”前面加上“}”使其成为一个映射,可以这样解析: (def stringtoparse ":first \"John\" :last \"Lukas\" :city \"London\"")

您知道一个函数,它接受Clojure字符串并将其转换为映射。例如,如果函数获取字符串

:第一个“约翰”:最后一个“卢卡斯”:伦敦城


它返回一个带有先前键值关系的映射。

您可以使用clojure.end/read-string函数进行此操作。它确保没有人向您的系统注入代码,否则将解析clojure数据结构。在“{”前面加上“}”使其成为一个映射,可以这样解析:

(def stringtoparse ":first \"John\" :last \"Lukas\" :city \"London\"") 

(clojure.edn/read-string (str "{" stringtoparse "}"))

当我使用clojure.edn模块时,我得到一个错误:ClassNotFoundException clojure.edn java.net.URLClassLoader.findClass(URLClassLoader.java:381),我使用clojure 1.7。该模块是否仅存在于Clojure 1.8中?在版本1.7中是否有使用它的方法?使用的是什么版本的clojure?clojure.edn命名空间自clojure 1.5以来一直存在。@CrazySynthax这将是
clojure.core
中的
read string
方法,由于列出的原因,您不应该使用它。@Mattias Wimmer,在键入clojure.edn/read-string之前,我做了:(需要“[clojure.edn]”)然后它通过了。如果你使用读取字符串,你有一个安全漏洞,你的应用程序将是pwn3e@Elogent在这里是完全正确的,这很重要。如果您因为确定“特殊标志”设置为false而忽略此选项,并且在生产环境中运行此选项,那么在将来的某个时候您将随机出现一个安全漏洞。