如何使用Nix读取文件系统中的JSON文件?
Nix读取本地文件系统JSON文件的方案
功能支持情况
读取并解析本地JSON是Nix原生支持的能力,不需要引入第三方依赖,通过内置函数即可直接实现。
使用方法
你需要配合使用两个Nix内置函数完成操作:
builtins.readFile <文件路径>:读取指定路径文件的内容,返回字符串格式builtins.fromJSON <JSON字符串>:将合法的JSON格式字符串解析为Nix可直接操作的属性集或列表
代码示例
假设你当前.nix文件同级目录下存在app_config.json,内容如下:
{ "port": 8080, "enableLog": true, "allowHosts": ["127.0.0.1", "localhost"] }
你可以用以下Nix代码读取并解析该文件:
let # 读取JSON文件内容为字符串 rawJson = builtins.readFile ./app_config.json; # 解析为Nix属性集 appConfig = builtins.fromJSON rawJson; in { servicePort = appConfig.port; # 取值为8080 logStatus = appConfig.enableLog; # 取值为true firstAllowHost = builtins.elemAt appConfig.allowHosts 0; # 取值为"127.0.0.1" }
注意事项
- 相对路径默认相对于你当前编写代码的
.nix文件所在目录,而非执行Nix命令的工作目录 - 若目标JSON格式不合法,
builtins.fromJSON会直接抛出评估错误终止执行,你可以通过builtins.pathExists <文件路径>提前判断文件是否存在 - 在Nix纯评估模式下运行时,需要确保目标文件被纳入Nix的可跟踪上下文,否则会触发访问权限报错
内容的提问来源于stack exchange,提问作者Chris Stryczynski
相关产品推荐
相关产品推荐

