【问题标题】:Clojure: convert a string to mapClojure:将字符串转换为映射
【发布时间】:2016-02-29 18:19:33
【问题描述】:

你知道接受 Clojure 字符串并将其转换为映射的函数吗?例如,如果函数获取字符串

:first "John" :last "Lukas" :city "London"

它返回一个包含先前键值关系的映射。

【问题讨论】:

    标签: dictionary clojure


    【解决方案1】:

    您可以为此使用 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 方法,出于herehere 列出的原因,您应该使用它。
    • @Mattias Wimmer,在输入 clojure.edn/read-string 之前我做了:(require '[clojure.edn]) 然后它通过了。
    • 如果您使用读取字符串,则存在安全漏洞,您的应用程序将是 pwn3e。 @Elogent 在这里是完全正确的,这很重要。如果您因为确定“特殊标志”设置为 false 而忽略此操作,并且您在生产环境中运行此操作,那么您将来某个时候将随机出现安全漏洞。
    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多