我有一个JSON文件如下:
{
"IP Address" : " 192.168.43.221 ",
"OS ":" Ubuntu ",
"OS Version ": " 16.04.4 ",
"OS Installed Data ": " Dec 8 23:59 ",
"Model name ": " AMDA10-5750MAPU with Radeon(tm)HD ",
"MemTotal ": " 5275728kB ",
"Hard disk capacity ": " [1.00TB] ",
"Users ": " ananth "
}
我想仅使用shell脚本将上述JSON文件转换为JSON对象?有人可以帮我这么做..
提前致谢。
答案 0 :(得分:1)
您的文件作为JSON文本有效,例如可以通过将内容粘贴到https://jsonlint.com来验证
一种方式来加载"将JSON文件转换为javascript解释器如下。为了特异性,假设解释器是v8或js(JavaScript-C)。首先,复制文件,同时预先添加" x =",例如
(echo "x="; cat input.json) > input.js
现在,在启动v8或js后,运行:load("input.js")
变量x
将包含JSON对象。
如果要修剪键名以使它们没有外部空间,则可以运行以下jq命令:
jq 'with_entries(.key|=(sub("^ +";"")|sub(" +$";"")))' input.json
基于一些注释,您似乎想要检查两个文件中的JSON对象是否等于"在对象平等的意义上。
这可以通过多种方式完成。一个简单而整洁的方法是使用jq如下:
jq -s '.[0] == .[1]' file1.json file2.json
另一种方法是将文件写入"规范" (即,规范化的)方式,以便可以使用诸如diff
之类的面向文本的工具,例如
jq -S . file1.json | sponge file1.json
jq -S . file2.json | sponge file2.json
-S选项使键按固定顺序排序; sponge
在这里是不必要的,但很方便。