尝试将CSV文件转换为JSON格式。这里有两行示例代码:
-21.3214077;55.4851413;Ruizia cordata
-21.3213078;55.4849803;Cossinia pinnata
我希望你能够提供类似于以下的东西:
"occurrences": [
{
"position": [-21.3214077, 55.4851413],
"taxo": {
"espece": "Ruizia cordata"
},
...
}]
这是我的脚本:
echo '"occurences": [ '
cat se.csv | while read -r line
do
IFS=';' read -r -a array <<< $line;
echo -n -e '{ "position": [' ${array[0]}
echo -n -e ',' ${array[1]} ']'
echo -e ', "taxo": {"espece":"' ${array[2]} '"'
done
echo "]";
我得到了非常奇怪的结果:
"occurences": [
""position": [ -21.3214077, 55.4851413 ], "taxo": {"espece":" Ruizia cordata
""position": [ -21.3213078, 55.4849803 ], "taxo": {"espece":" Cossinia pinnata
我的代码哪里有问题?
jq
或其他JSON感知工具呢?使用字符串拼接生成JSON(或其他结构化数据序列化)最多是容易出错的。 - Charles Duffy*
,它将被替换为文件名列表。你不必要地使用了-e
,因此如果你的 JSON 数据包含\n
序列(在 JSON 中应该表示为这些字符),它将被替换为字面上的换行符;而且由于-e
的存在,你的代码在具有 POSIX:标准echo
的 shell 上无法正常工作。 - Charles Duffy