解析 json 并放入数组

parse json and put in array

我正在尝试解析一个看起来像这样的 JSON 文件,然后尝试将每个字段存储在一个数组中,然后尝试读取它。但是,我认为它会进入无限循环。有人知道我做错了什么吗?

#!/bin/bash

test(){
    local file="/Users/f.json"
    if [ -f "$file" ]; then
    echo "present"
    else
        echo "absent"
    fi
    
    #jq . f.json
    
    while read rule; do
        local idd
        local username

    idd=$(jq --raw-output '.id' <<< ${rule})
    username=$(jq --raw-output '.username' <<< ${rule})
    
    #username=$(jq --raw-output '.username')

    done
    
    for (( i=0; i<${#idd[@]}; i++ )); do
        echo "${idd[i]}"
    done
    
}
test

这里是json:

{
      "id": 5679162,
      "username": "ryderw1"
    }
    {
      "id": 5679163,
      "username": "ryderw3"
    }
    {
      "id": 5679164,
      "username": "ryderw4"
    }

我想要的 o/p 应该是:

5679162
5679163
5679164

我建议将 jq 的输出读取到数组。

mapfile -t idd < <(jq '.id' /Users/f.json)
declare -p idd

输出:

declare -a idd=([0]="5679162" [1]="5679163" [2]="5679164")