将 Vimscript 字典导出为 JSON

Sea*_*sey 7 vim json json-value

我找到了一个可以让 Vim 解析 JSON 的插件。我需要将 VimScript 字典导出为 JSON。目前我只是使用:

let str = string(dict)
substitute(str, "'", '"', 'g')
Run Code Online (Sandbox Code Playgroud)

这是可行的,但当我遇到带有嵌入引号的字典时,它肯定会中断。有什么更好的办法呢?

ben*_*her 7

在我最初的回答两年半后,有一个更简单的替代方案:升级到 Vim 8 并使用json_encode()or (如果你不需要严格的 JSON)js_encode()。


Ing*_*kat 4

从 Vim 7.4.1304 开始(因此绝对可以在 Vim 8.0 中使用),这些函数作为json_encode()和内置于 Vim 中json_decode()。

为了向后兼容更旧的 Vim 版本,WebAPI.vim插件有一个用纯 Vimscript 实现的 JSON 解析器和编码器:

:let jsonString = webapi#json#encode({...})
Run Code Online (Sandbox Code Playgroud)