解析avsc文件以所需格式获取键值对

时间:2019-05-24 22:38:34

标签: json

我有一个.avsc文件,该文件的数据格式为json,如下所示

{
"type":"records",
"name": "settings_table",
"fields": [
    {
        "name": "testing_value",
        "default":null,
        "type": [
        "null",
        "string"
        ]
    },
    {
        "name": "description",
        "default":null,
        "type": [
        "null",
        "string"
        ]
    },
    {
        "name": "key_value",
        "default":null,
        "type": [
        "null",
        "long"
        ]
    }
  ]
}

我想创建一个文件,其输出如下所示

testing_value  string
description string
key_value long

我在下面的Linux中尝试过

cat file_name.avsc | python -m json.tool > temp_file_name.avsc

sed -i 's/\"//g;s/\,//g' temp_file_name.avsc

grep name temp_file_name.avsc|cut -d':' -f2|tr "[:upper:]" "[:lower:]" > new_file_after_parsing.txt

我得到的结果如下

testing_value
description
key_value

1 个答案:

答案 0 :(得分:1)

可能最简单的方法是使用jq

 jq '.fields[] | "\(.name) \(.type[1])" ' x.avcs | xargs -n1 echo

也就是说,遍历您的fields数组,在类型列表中拉出其名称和第二项的字符串,然后使用echo将其打印出来而不加引号。

我确定这段代码有一些极端的情况,但是我不知道你是否会碰到它们。