我想将 JSON 文件转换为 bash 字符串数组,稍后我可以对其进行迭代。我的JSON结构如下:
[
{
"USERID": "TMCCP",
"CREATED_DATE": "31/01/2020 17:52"
},
{
"USERID": "TMCCP",
"CREATED_DATE": "31/01/2020 17:52"
}
]
这是我的 bash 脚本:
test_cases=($(jq -c '.[]' data.json))
echo ${test_cases[0]}
echo ${test_cases[1]}
echo ${test_cases[2]}
echo ${test_cases[3]}
正如您所看到的,它返回包含 4 个元素而不是 2 个元素的数组。输出:
{"USERID":"TMCCP","CREATED_DATE":"31/01/2020
17:52"}
{"USERID":"TMCCP","CREATED_DATE":"31/01/2020
17:52"}
由于某种原因,日期字段中的空格会导致一些解析问题。知道如何克服这个问题吗?
Use readarray https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#index-readarray反而。
$ readarray -t test_cases < <(jq -c '.[]' file)
$ declare -p test_cases
declare -a test_cases=([0]="{\"USERID\":\"TMCCP\",\"CREATED_DATE\":\"31/01/2020 17:52\"}" [1]="{\"USERID\":\"TMCCP\",\"CREATED_DATE\":\"31/01/2020 17:52\"}")
And read
可以如下所示使用,其中readarray
不可用。
IFS=$'\n' read -d '' -a test_cases < <(jq -c '.[]' file)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)