Clojure 名称绑定到 REST JSON 数据
Clojure name binding to REST JSON data
我是一名前端工程师,我们的团队正在将我们的许多旧服务转换为用 clojure 编写的微服务。我看到的主要问题是 clojure 命名约定更喜欢在变量名中使用连字符来分隔单词。这意味着如果您直接将变量映射到 JSON 任何 JS 消费者都需要使用括号表示法访问此数据,例如响应['to-separate-words']。这显然不理想。我认为这将是一个简单的最佳查找实践,但我一直在寻找一个小时,似乎我阅读的所有文档都避免了这个问题,但使用了单个单词。有没有其他人处理过这个。
您可以使用支持大多数组合的 camel-snake-kebab 库。您可以将其插入 Clojure 的大多数 JSON 库(柴郡、cli-json、data.json - 正如 Elogent 所提到的),因为它们通常可以选择为处理 属性 名称修改。
例如柴郡:
生成 JSON 驼峰式 属性 姓名:
(cheshire.core/generate-string {:my-clojure-key "abc"}
{:key-fn camel-snake-kebab.core/->camelCaseString})
结果:
{"myClojureKey":"abc"}
解析 JSON 以获取带有 kebab 大小写键的地图:
(cheshire.core/parse-string "{\"myClojureKey\":\"abc\"}"
camel-snake-kebab.core/->kebab-case-keyword)
结果:
{:my-clojure-key "abc"}
在 camel-snake-kebab readme 中也有一个 data.json 的例子。
我是一名前端工程师,我们的团队正在将我们的许多旧服务转换为用 clojure 编写的微服务。我看到的主要问题是 clojure 命名约定更喜欢在变量名中使用连字符来分隔单词。这意味着如果您直接将变量映射到 JSON 任何 JS 消费者都需要使用括号表示法访问此数据,例如响应['to-separate-words']。这显然不理想。我认为这将是一个简单的最佳查找实践,但我一直在寻找一个小时,似乎我阅读的所有文档都避免了这个问题,但使用了单个单词。有没有其他人处理过这个。
您可以使用支持大多数组合的 camel-snake-kebab 库。您可以将其插入 Clojure 的大多数 JSON 库(柴郡、cli-json、data.json - 正如 Elogent 所提到的),因为它们通常可以选择为处理 属性 名称修改。
例如柴郡:
生成 JSON 驼峰式 属性 姓名:
(cheshire.core/generate-string {:my-clojure-key "abc"}
{:key-fn camel-snake-kebab.core/->camelCaseString})
结果:
{"myClojureKey":"abc"}
解析 JSON 以获取带有 kebab 大小写键的地图:
(cheshire.core/parse-string "{\"myClojureKey\":\"abc\"}"
camel-snake-kebab.core/->kebab-case-keyword)
结果:
{:my-clojure-key "abc"}
在 camel-snake-kebab readme 中也有一个 data.json 的例子。