คำถามติดแท็ก jq

jq เป็นเครื่องมือที่คล้ายกับข้อมูล JSON คุณสามารถใช้มันเพื่อแบ่งส่วนกรองแมปและแปลงข้อมูลที่มีโครงสร้างได้อย่างง่ายดายเช่นเดียวกับที่ sed, awk, grep และ friends ให้คุณเล่นกับข้อความ

2
วิธีการกรองอาร์เรย์ของวัตถุตามค่าในอาร์เรย์ภายในด้วย jq
รับข้อมูลนี้: [ { "Id": "cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b", "Names": [ "condescending_jones", "loving_hoover" ] }, { "Id": "186db739b7509eb0114a09e14bcd16bf637019860d23c4fc20e98cbe068b55aa", "Names": [ "foo_data" ] }, { "Id": "a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19", "Names": [ "jovial_wozniak" ] }, { "Id": "76b71c496556912012c20dc3cbd37a54a1f05bffad3d5e92466900a003fbb623", "Names": [ "bar_data" ] } ] ฉันกำลังพยายามสร้างตัวกรองด้วยjqที่ส่งคืนวัตถุทั้งหมดด้วยIds ที่ไม่มี "data" ในNamesอาร์เรย์ภายในโดยที่เอาต์พุตถูกคั่นด้วยบรรทัดใหม่ สำหรับข้อมูลข้างต้นผลลัพธ์ที่ฉันต้องการคือ cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b a4b7e6f5752d8dcb906a5901f7ab82e403b9dff4eaaeebea767a04bac4aada19 ฉันคิดว่าฉันค่อนข้างใกล้กับสิ่งนี้: (. - select(.Names[] contains("data"))) | .[] …
239 arrays  json  select  jq  negation 

7
ใช้ jq เพื่อแยกวิเคราะห์และแสดงหลายเขตข้อมูลใน json ลำดับ
ฉันมี Json นี้ { "users": [ { "first": "Stevie", "last": "Wonder" }, { "first": "Michael", "last": "Jackson" } ] } ใช้ jq ฉันต้องการแสดงชื่อและนามสกุลตามลำดับ ชอบมาก Stevie Wonder Michael Jackson นี่เป็นวิธีที่ฉันได้รับ - jq '.users[].first, .users[].last' แต่มันจะแสดง "Stevie" "Michael" "Wonder" "Jackson" แจ้งให้ทราบดังต่อไปนี้ - คำพูดคู่ที่ฉันไม่ต้องการ การรับขนคืนที่ฉันไม่ต้องการ มันหงุดหงิด แบบสอบถามของฉันแสดงชื่อทั้งหมดก่อนจากนั้นจึงแสดงนามสกุลทั้งหมด อย่างไรก็ตามฉันต้องการคู่แรก - คู่สุดท้าย - คู่สุดท้าย
237 json  jq 

3
เลือกวัตถุตามค่าของตัวแปรในวัตถุโดยใช้ jq
ฉันมีไฟล์ json ต่อไปนี้: { "FOO": { "name": "Donald", "location": "Stockholm" }, "BAR": { "name": "Walt", "location": "Stockholm" }, "BAZ": { "name": "Jack", "location": "Whereever" } } ฉันใช้ jq และต้องการได้รับองค์ประกอบ "ชื่อ" ของวัตถุที่ 'ตำแหน่งที่ตั้ง' คือ 'สตอกโฮล์ม' ฉันรู้ว่าฉันสามารถได้รับชื่อทั้งหมดด้วย cat json | jq .[] | jq ."name" "Jack" "Walt" "Donald" แต่ฉันไม่สามารถหาวิธีพิมพ์เฉพาะวัตถุบางอย่างได้โดยระบุค่าของคีย์ย่อย (ที่นี่"location" : "Stockholm")
236 json  bash  jq 

2
จะใช้ `jq 'ใน shell shell ได้อย่างไร?
ดูเหมือนว่าฉันจะไม่สามารถjqทำงานได้ "ปกติ" ในไปป์ไลน์เชลล์ ตัวอย่างเช่น: $ curl -s https://api.github.com/users/octocat/repos | jq | cat ผลลัพธ์jqเพียงพิมพ์ข้อความช่วยเหลือของ * สิ่งเดียวกันนี้เกิดขึ้นหากฉันพยายามเปลี่ยนเส้นทางjqผลลัพธ์ไปยังไฟล์: $ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json มีjqการประกันตัวโดยจงใจหากพิจารณาว่าไม่ได้เรียกใช้จาก tty หรือไม่? ฉันจะป้องกันพฤติกรรมนี้เพื่อให้สามารถใช้jqในขั้นตอนการทำงานได้อย่างไร * (ฉันรู้ว่าตัวอย่างนี้มีการใช้แมวที่ไร้ประโยชน์มันเป็นเพียงภาพประกอบเท่านั้น)
198 shell  pipe  jq 

3
วิธีการนับรายการในวัตถุ JSON โดยใช้บรรทัดคำสั่ง?
ฉันได้JSONรับคำตอบเช่นนี้จากcurlคำสั่ง: [ { "cid": 49, "pyn": "yi4", "hans": "亿", "hant": "億", "tid": 68, "l10n": "cent million", "pid": 1, "pos": "num", "pos_txt": "" }, { "cid": 50, "pyn": "yi4", "hans": "亿", "hant": "億", "tid": 69, "l10n": "100 millions", "pid": 1, "pos": "num", "pos_txt": "" } ] ฉันจะนับจำนวนรายการในอาร์เรย์ (ที่นี่2) การใช้Bashหรือบรรทัดคำสั่ง (เช่นunderscore) ได้อย่างไร
179 json  bash  curl  jq 

7
วิธีรับชื่อคีย์จาก JSON โดยใช้ jq
curl http://testhost.test.com:8080/application/app/version | jq '.version' | jq '.[]' คำสั่งด้านบนแสดงเฉพาะค่าดังต่อไปนี้: "madireddy@test.com" "2323" "test" "02-03-2014-13:41" "application" ฉันจะรับชื่อคีย์แทนดังต่อไปนี้ได้อย่างไร: email versionID context date versionName
131 json  shell  unix  key  jq 

6
วิธีผสานออบเจ็กต์ JSON 2 รายการจาก 2 ไฟล์โดยใช้ jq
ฉันใช้jq tools (jq-json-processor) ในเชลล์สคริปต์เพื่อแยกวิเคราะห์ json ฉันมีไฟล์ json 2 ไฟล์และต้องการรวมเป็นไฟล์เดียว นี่คือเนื้อหาของไฟล์: file1 { "value1": 200, "timestamp": 1382461861, "value": { "aaa": { "value1": "v1", "value2": "v2" }, "bbb": { "value1": "v1", "value2": "v2" }, "ccc": { "value1": "v1", "value2": "v2" } } } file2 { "status": 200, "timestamp": 1382461861, "value": { "aaa": …
125 json  shell  command-line  jq 

1
JQ: เลือกหลายเงื่อนไข
ฉันมี json และในขณะนี้ใช้การเลือกเพื่อรับเฉพาะข้อมูลที่ตรงกับเงื่อนไขเดียวฉันต้องกรองตามเงื่อนไขเพิ่มเติม เช่น: .[] | select((.processedBarsVolume <= 5) && .processedBars > 0) ฉันจะทำสิ่งนี้ได้อย่างไร?
116 json  jq 

8
การส่งผ่านตัวแปร bash ไปยัง jq
ฉันได้เขียนสคริปต์เพื่อดึงค่าบางอย่างจากfile.jsonไฟล์. ใช้งานได้ถ้าฉันให้ค่ากับ jq selectแต่ตัวแปรดูเหมือนจะไม่ทำงาน (หรือฉันไม่รู้วิธีใช้) #!/bin/sh #this works *** projectID=$(cat file.json | jq -r '.resource[] | select(.username=="myemail@hotmail.com") | .id') echo "$projectID" EMAILID=myemail@hotmail.com #this does not work *** no value is printed projectID=$(cat file.json | jq -r '.resource[] | select(.username=="$EMAILID") | .id') echo "$projectID"

3
ฉันจะอัปเดตค่าเดียวในเอกสาร json โดยใช้ jq ได้อย่างไร
Appologies ถ้าฉันมองข้ามสิ่งที่ชัดเจนมาก ฉันเพิ่งพบjqและกำลังพยายามใช้เพื่ออัปเดตค่า JSON หนึ่งค่าโดยไม่ส่งผลกระทบต่อข้อมูลโดยรอบ ฉันต้องการไปป์curlผลลัพธ์jqอัปเดตค่าและไพพ์ JSON ที่อัปเดตเป็นไฟล์curl -X PUT. สิ่งที่ต้องการ curl http://example.com/shipping.json | jq '.' field: value | curl -X PUT http://example.com/shipping.json จนถึงตอนนี้ฉันได้แฮ็กด้วยกันโดยใช้sedแต่หลังจากดูตัวอย่างของตัว|=ดำเนินการในบางส่วนjqแล้วฉันแน่ใจว่าฉันไม่ต้องการสิ่งเหล่านี้ นี่คือตัวอย่าง JSON - ฉันจะใช้jqตั้งค่า"local": falseอย่างไรในขณะที่ยังคงรักษา JSON ที่เหลืออยู่ { "shipping": { "local": true, "us": true, "us_rate": { "amount": "0.00", "currency": "USD", "symbol": "$" } } }
114 json  jq 

5
วิธีการแปลง JSON อย่างง่ายตามอำเภอใจเป็น CSV โดยใช้ jq
การใช้jqการเข้ารหัส JSON โดยพลการอาร์เรย์ของวัตถุตื้นจะแปลงเป็น CSV ได้อย่างไร มี Q & As มากมายบนไซต์นี้ที่ครอบคลุมโมเดลข้อมูลเฉพาะที่ฮาร์ดโค้ดฟิลด์ แต่คำตอบสำหรับคำถามนี้ควรใช้งานได้กับ JSON ใด ๆ โดยมีข้อ จำกัด เพียงอย่างเดียวคืออาร์เรย์ของออบเจ็กต์ที่มีคุณสมบัติสเกลาร์ (ไม่มีลึก / ซับซ้อน / วัตถุย่อยเนื่องจากการทำให้แบนเป็นอีกคำถามหนึ่ง) ผลลัพธ์ควรมีแถวส่วนหัวที่ให้ชื่อเขตข้อมูล ค่ากำหนดจะได้รับสำหรับคำตอบที่คงลำดับฟิลด์ของอ็อบเจ็กต์แรกไว้ แต่ไม่ใช่ข้อกำหนด ผลลัพธ์อาจล้อมรอบเซลล์ทั้งหมดด้วยเครื่องหมายอัญประกาศคู่หรือใส่เฉพาะเซลล์ที่ต้องการการอ้างอิงเท่านั้น (เช่น 'a, b') ตัวอย่าง อินพุต: [ {"code": "NSW", "name": "New South Wales", "level":"state", "country": "AU"}, {"code": "AB", "name": "Alberta", "level":"province", "country": "CA"}, {"code": "ABD", …
106 json  csv  jq 

4
ฉันจะเลือกหลายช่องใน jq
ไฟล์อินพุตของฉันมีลักษณะดังนี้: { "login": "dmaxfield", "id": 7449977, ... } { "login": "dmaxfield", "id": 7449977, ... } ฉันสามารถรับชื่อล็อกอินทั้งหมดด้วยสิ่งนี้: cat members | jq '.[].login' แต่ฉันไม่สามารถถอดรหัสไวยากรณ์เพื่อรับทั้งล็อกอินและ id?
97 jq 

2
ใช้ jq เพื่อแยกวิเคราะห์สตริง JSON
ฉันกำลังพยายามjqแยกวิเคราะห์โครงสร้าง JSON เช่น: { "a" : 1, "b" : 2, "c" : "{\"id\":\"9ee ...\",\"parent\":\"abc...\"}\n" } นั่นคือองค์ประกอบใน JSON คือสตริงที่มี Escape json ดังนั้นฉันมีบางอย่างตามแนวของ $ jq [.c] myFile.json | jq [.id] แต่ที่เกิดปัญหากับ jq: error: Cannot index string with string เนื่องจากเอาต์พุตของ. c เป็นสตริงไม่ใช่ JSON มากกว่า ฉันจะให้ jq แยกวิเคราะห์สตริงนี้ได้อย่างไร วิธีการแก้ปัญหาแรกของฉันคือการใช้ sed เพื่อแทนที่ทุกตัวอักษรหลบหนี ( \":\", \",\"และ\") …
91 json  string  sed  escaping  jq 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.