ฉันพยายามใช้ ตัวแยกวิเคราะห์ jq ในสคริปต์ทุบตีของฉันและฉันสับสนเกี่ยวกับวิธีการทำงานบางคนสามารถอธิบายสิ่งที่ฉันทำผิดหรือเปล่า?
นี่คือไฟล์ต้นฉบับจากบริการภายนอกและฉันต้องได้รับ value
จากมัน:
root@test ~ # cat test.json
{"sensors":[{"id":34585,"value":-3.06,"time":1457031003}]}
พยายามส่งไปที่ jq
:
root@test ~ # cat narod.json | jq
{
"sensors": [
{
"id": 34585,
"value": -3.06,
"time": 1457031003
}
]
}
พยายามที่จะรับ sensors
:
root@test ~ # cat narod.json | jq '.sensors'
[
{
"id": 34585,
"value": -3.06,
"time": 1457031003
}
]
พยายามที่จะรับ value
จาก sensors
:
root@test ~ # cat narod.json | jq '.sensors.value'
jq: error (at <stdin>:0): Cannot index array with string "value"
.sensors
ในอินพุต JSON ของคุณคือ แถว ไม่ใช่ dict มันไม่ได้ มี ดัชนีเช่น. value - เฉพาะรายการภายในเท่านั้น ดังนั้นคุณต้องบอกให้ jq ใช้ดัชนีกับแต่ละรายการของอาร์เรย์โดยใช้ []
jq sensors[].value
ไม่ใช่ที่คอมพิวเตอร์ของฉันดังนั้นจึงไม่สามารถทดสอบหรือโพสต์คำตอบแบบเต็ม แต่จะทำในภายหลัง