【问题标题】:parse json and put in array解析json并放入数组
【发布时间】:2021-09-01 17:44:03
【问题描述】:

我正在尝试解析一个看起来像这样的 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

【问题讨论】:

    标签: json bash environment-variables jq


    【解决方案1】:

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

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

    输出:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多