Score:0

จับสตริงจากการตอบกลับ JSON

ธง jp
sai

ฉันมีการตอบสนอง Json ด้านล่างสำหรับวิธี POST ใน bash และต้องการจับค่าหลังจากนั้น รหัสเซสชัน":" และกำหนดให้กับตัวแปร session_ID.

{"changeId":"79911476-53a4-46e1-8ffd-422436b51ad1","changeType":"created","record":{"key":"159.65.198.219"}},{"changeId":"bd52dcbd- a5ab-4557-b2b8-88793c2d2964","changeType":"created","record":{"key":"161.35.111.167"}},{"changeId":"f4f5c94e-6c06-473c-b810-b7bbd69c71ad" ,"changeType":"created","record":{"key":"161.35.123.111"}}],"sessionId":"b7305d77-20f1-4d57-9eb1-9b9fb4f9552d"}

#การโทรAPI

request_post="$(curl --insecure --request POST "endpoint_URL")"

สะท้อน $request_post

ฉันต้องการความช่วยเหลือเพื่อทำตามขั้นตอนด้านล่าง

#ตัดรหัสเซสชันออกจากการตอบกลับ

session_ID=

อย

FedKad avatar
cn flag
คุณควรใช้คำสั่ง `jq` Google "วิธีใช้คำสั่ง jq ใน Linux"
hr flag
หากคุณต้องการความช่วยเหลือเกี่ยวกับ `jq` โปรดตรวจสอบให้แน่ใจว่าตัวอย่างของคุณเป็นส่วนย่อย JSON ที่แยกวิเคราะห์ได้อย่างสมบูรณ์
Score:0
ธง cn

แม้ว่าการแยกวิเคราะห์โครงสร้าง json ควรทำโดย json parser แต่กรณีเล็กน้อยเช่นนี้สามารถทำได้ด้วยเครื่องมือเล็กน้อยและคุณสามารถส่งคำตอบได้ เสด, ตัวอย่างเช่น:

sed 's/.*"sessionId":"\([^"]*\).*/\1/'
      \______________/ \___/ \/
             เอ บี ซี

A ตรงกับทุกอย่างไม่เกินและรวมถึง "รหัสเซสชัน":", B ตรงกับทั้งหมดต่อไปนี้ไม่ใช่"ซึ่งเป็น sessionId จริง และ C ตรงกับส่วนที่เหลือของบรรทัด B รวมอยู่ใน \(\)จึงสามารถเรียกแทนกันได้ว่า \1. ดังนั้นทั้งบรรทัดจึงถูกแทนที่ด้วย sessionId เท่านั้น

แน่นอน หากเอาต์พุตสามารถแยกออกเป็นหลายบรรทัดหรือใช้รูปแบบอื่นๆ ที่อนุญาตโดยรูปแบบ json สคริปต์จะมีความซับซ้อนมากขึ้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา