【发布时间】:2020-04-21 00:56:45
【问题描述】:
我有一个包含键值对格式的文本文件
Var1=Value1
Var2=Value2
Var3=Value3
我已使用以下构造将它们转换为变量
while read -r line; do declare "$line"; done <inputfile.txt
我需要将这些变量或键/值对转换为如下所示的 json 格式
[{
"Key": "Var1",
"Value": "Value1"
}, {
"Key": "Var2",
"Value": "Value2"
}, {
"Key": "Var3",
"Value": "Value3"
}]
如何在 shell 脚本中实现将变量转换为 JSON 格式,或直接从文件读取而不转换为变量?
我需要使其通用以从文件中读取键/值对并转换为 JSON。然后我会在命令中使用 json 字符串,因此 json 也需要在一行上。我只是为了便于阅读而对其进行了格式化,但需要它是
[{"Key": "Var1","Value": "Value1"}, {"Key": "Var2","Value": "Value2"}, {"Key": "Var3","Value": "Value3"}]
谢谢
【问题讨论】:
-
This similar question 应该给出一些提示。
-
谢谢@Shawn。但是盒子上没有安装jq,我可能无法安装它。有没有纯shell脚本的方式来生成呢?
-
@l0b0。在发布之前,我已经看过这个问题。它有硬编码的键,我需要一种通用格式,其中键名也来自文件
-
@adbdkb,要实现 正确 纯 shell 答案,您需要在 shell 中实现整个 JSON 语言。这意味着转义所有需要转义的字符,将多字节 Unicode 字符转换为具有正确代码点的
\u....序列等。 -
基本上这意味着重新实现
jq,除非你真的只有微不足道的键和值。