使用bash将文件内容转换为单个json字符串值

eve*_*zon 2 bash json escaping

我想读取一个文件,并将整个内容放到一个转义用于json对象的单个字符串中。

我想在命令行/终端(Linux)上执行此操作。

有任何想法吗?提前THX!

eve*_*zon 7

对于对我的解决方案感兴趣的每个人(请阅读“ UPDATE 1”):

jq  -n                                \
   --arg content "$(cat theFile.txt)" \
   '{ theContent : $content }'        \
|                                     \
jq '.theContent'
Run Code Online (Sandbox Code Playgroud)

更新0

Jeff Mercado为第一部分提供了更紧凑的解决方案-因此我在代码中对其进行了如下修改:

jq -Rs                  \
   '{ theContent: . }'  \
   theFile.txt          \
|                       \
jq '.theContent'
Run Code Online (Sandbox Code Playgroud)

更新1

现在,Jeff Mercado为我寻找的东西提供了更紧凑的解决方案:

jq -Rs '.' theFile.txt
Run Code Online (Sandbox Code Playgroud)

THX阅读;-)

  • 等等,如果你以后只是想把它拉出来,那么把它放在物体里有什么意义呢?这里的整个目标只是获取文件并将其转义为 json 字符串吗?如果是这种情况,您可以跳过该对象,直接输出结果。'jq -Rs'。文件.txt` (2认同)

Jef*_*ado 7

更直接的方法是使用原始输入 ( -R) 结合 slurp ( -s) 参数将整个输入作为单个字符串读取。然后获取该输入并存储在适当的属性中。您不需要将它作为单独的参数传入。

$ jq -Rs '{ theContent: . }' theFile.txt
Run Code Online (Sandbox Code Playgroud)