簡體   English   中英

Unix循環並為JSON添加逗號

[英]Unix Loop and add comma for JSON

我正在處理要導入JSON代碼的csv文件。 我想補充"在中部echo ,並在循環加,分離不到底。

這是變量IMG。 (在此示例中,我有2個URL,但也許可以更多。)

img="https://example.com/img/p/8/1/1/811.jpg,https://example.com/img/p/8/0/8/808.jpg"

這是我的代碼:

img=$(echo   $img |  tr -d '"')
echo "    \"pictures\":["                             >>"$output_filename"
    for imgt in ${img//,/ }
    do
    echo "    {\"source\":$imgt} "                    >>"$output_filename"
    done
    echo ']'                                          >>"$output_filename"
    echo '}'                                          >>"$output_filename"

結果

  "pictures":[
{"source":"https://quierotodo.com.ar/img/p/8/1/1/811.jpg} 
{"source":https://quierotodo.com.ar/img/p/8/0/8/808.jpg"}
]}

預期結果

   "pictures":[
{"source":"https://quierotodo.com.ar/img/p/8/1/1/811.jpg"}, 
{"source":"https://quierotodo.com.ar/img/p/8/0/8/808.jpg"}
]}

您能建議在代碼中間添加一些選項,而不是在最后嗎?

我對您的腳本進行了一些修改,並:

#!/bin/bash
#
img="https://example.com/img/p/8/1/1/811.jpg,https://example.com/img/p/8/0/8/808.jpg"

# Remove the double quotes
img=$(echo $img | tr -d '"')

# Split on the comma, and create an array
IFS=',' read -ra images <<< "$img"

# Start the JSON
echo "\"pictures\":["

# loop through the images, and output the JSON
# keep track of the index of output items
counter=1
for image in "${images[@]}"
do
    echo -n "    {\"source\":\"$image\"}"
    # Add a comma unless it is the last element in the array
    if [ $counter -lt ${#images[@]} ]
    then
        echo ","
    else
        echo ""
    fi
    (( counter = counter + 1 ))
done

# Close the JSON
echo "]}"

我將$img轉換為數組。 然后,我基於數組輸出JSON。 除非它是數組中的最后一項,否則我將在該項目旁邊添加一個逗號。

輸出為:

$ ./so.bash 
"pictures":[
    {"source":"https://example.com/img/p/8/1/1/811.jpg"},
    {"source":"https://example.com/img/p/8/0/8/808.jpg"}
]}

您將必須對其進行修改以在某處添加一個開口{

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM