我想知道是否有人可以告诉我如何将以下JSON数据排序为纯文本?我尝试使用“ jq”和“ jsonv”(Linux应用程序),但是没有运气。
这是JSON数据:
{"@hrinn": {"host": {"1": " \"some.host.name\",", "2": " false,"}, "password": {"1": " \"123456\","}}},{"@hrinn": {"host": {"1": " \"another.host.name\",", "2": " false,""}, "password": {"1": " \"654321\","}}},{"@Abnerene": {"host": {"1": " \"example.com\",", "2": " false,"}, "username": {"1": " \"username\","}, "password": {"1": " \"password123\","}}
请注意,所有JSON数据都在同一行
预期结果将是:
hostname username password
host1.net johndoe q1w2e3
host2.com alex qwerty
host3.org bob 123456
任何帮助将不胜感激
谢谢
答案 0 :(得分:1)
首先,您的示例json文件包含三个语法错误:
}
。[]
作为数组括起来。然后,修改后的json文件将如下所示:
$ cat test.json
[
{"@hrinn": {"host": {"1": " \"some.host.name\",", "2": " false,"}, "password": {"1": " \"123456\","}}},
{"@hrinn": {"host": {"1": " \"another.host.name\",", "2": " false,"}, "password": {"1": " \"654321\","}}},
{"@Abnerene": {"host": {"1": " \"example.com\",", "2": " false,"}, "username": {"1": " \"username\","}, "password": {"1": " \"password123\","}}}
]
请注意,插入的换行符仅供人类阅读,与解析器无关。
现在您可以将json文件输入jq
:
$ jq -r '.[] | .[] | [.host["1"], .username["1"], .password["1"]] | @sh' test.json
产生:
' "some.host.name",' null ' "123456",'
' "another.host.name",' null ' "654321",'
' "example.com",' ' "username",' ' "password123",'
如果您的json文件中的值是正确的值,则结果看起来会更好。
希望这会有所帮助。