ทุกคนสามารถแนะนำ Unix (เลือกรสชาติของคุณ) ตัวแยกวิเคราะห์ JSON ที่สามารถใช้ในการพิจารณาค่าจากการตอบสนอง JSON ในไปป์ไลน์ได้หรือไม่?
ทุกคนสามารถแนะนำ Unix (เลือกรสชาติของคุณ) ตัวแยกวิเคราะห์ JSON ที่สามารถใช้ในการพิจารณาค่าจากการตอบสนอง JSON ในไปป์ไลน์ได้หรือไม่?
คำตอบ:
คุณสามารถใช้ parser บรรทัดคำสั่งนี้ (ซึ่งคุณสามารถใส่ในนามแฝงทุบตีหากคุณต้องการ) โดยใช้โมดูลที่สร้างขึ้นในแกน Perl:
perl -MData::Dumper -MJSON::PP=from_json -ne'print Dumper(from_json($_))'
perl -e "use JSON; print to_json( decode_json(<>), { pretty => 1 } )"
ฉันชอบpython -m json.tool
ที่ดูเหมือนว่าจะพร้อมใช้งานตามค่าเริ่มต้นในระบบปฏิบัติการ * ส่วนใหญ่ต่อการเริ่มต้น
$ echo '{"foo":1, "bar":2}' | python -m json.tool
{
"bar": 2,
"foo": 1
}
แต่ควรสังเกตว่านี่จะเรียงลำดับคีย์ทั้งหมดตามลำดับตัวอักษรซึ่งเป็นหรืออาจเป็นสิ่งที่ดีในการที่ json ถูกสร้างขึ้นโดยภาษาบางภาษาที่ใช้ HashMaps ที่ไม่มีการเรียงลำดับ ...
json.tool
เป็นเพียงมือสั้น ๆ ที่จะพิมพ์สวย ๆ หากคุณต้องการแยก / จัดการข้อมูล json ในเชลล์สคริปต์ฉันจะใช้jq
สิ่งที่ยอดเยี่ยมอย่างแท้จริงในสิ่งที่เกิดขึ้น ...
json.tool
สิบครั้งต่อวัน ฉันคิดว่าฉันเข้าใจผิดความหมายของ "introspec" ในคำถามขอบคุณสำหรับการชี้ของคุณ
json.tool
ทำสองสิ่งเท่านั้นคือตรวจสอบและพิมพ์ json มันไม่ใคร่ครวญค่าใน JSON เช่นjq
ไม่
หากคุณกำลังมองหาเครื่องมือรวบรวม C พกพา:
http://stedolan.github.com/jq/
จากเว็บไซต์:
jq เปรียบเสมือนsedสำหรับข้อมูล JSON - คุณสามารถใช้มันเพื่อแบ่งและกรองและแม็พและแปลงข้อมูลที่มีโครงสร้างได้อย่างง่ายดายเช่นsed , awk , grepและเพื่อน ๆ ให้คุณเล่นกับข้อความ
jq สามารถทำให้รูปแบบข้อมูลที่คุณเก็บไว้ในรูปแบบที่คุณต้องการมีความพยายามน้อยมากและโปรแกรมที่จะทำนั้นมักจะสั้นและง่ายกว่าที่คุณคาดหวัง
บทช่วยสอน : http://stedolan.github.com/jq/tutorial/
คู่มือ : http://stedolan.github.com/jq/manual/
ดาวน์โหลด : http://stedolan.github.com/jq/download/
apt install jq
คุณสามารถเพียงแค่
jq
ผมถามหลาย-a-ดวงจันทร์ที่ผ่านมาและได้เรียนรู้ที่จะรัก
ฉันได้สร้างโมดูลที่ออกแบบมาโดยเฉพาะสำหรับการจัดการ JSON ของบรรทัดคำสั่ง:
https://github.com/ddopson/underscore-cli
ช่วยให้คุณทำสิ่งที่ทรงพลังได้อย่างง่ายดาย:
cat earthporn.json | underscore select '.data .title'
# [ 'Fjaðrárgljúfur canyon, Iceland [OC] [683x1024]',
# 'New town, Edinburgh, Scotland [4320 x 3240]',
# 'Sunrise in Bryce Canyon, UT [1120x700] [OC]',
# ...
# 'Kariega Game Reserve, South Africa [3584x2688]',
# 'Valle de la Luna, Chile [OS] [1024x683]',
# 'Frosted trees after a snowstorm in Laax, Switzerland [OC] [1072x712]' ]
cat earthporn.json | underscore select '.data .title' | underscore count
# 25
underscore map --data '[1, 2, 3, 4]' 'value+1'
# prints: [ 2, 3, 4, 5 ]
underscore map --data '{"a": [1, 4], "b": [2, 8]}' '_.max(value)'
# [ 4, 8 ]
echo '{"foo":1, "bar":2}' | underscore map -q 'console.log("key = ", key)'
# key = foo
# key = bar
underscore pluck --data "[{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}]" name
# [ 'moe', 'larry', 'curly' ]
underscore keys --data '{name : "larry", age : 50}'
# [ 'name', 'age' ]
underscore reduce --data '[1, 2, 3, 4]' 'total+value'
# 10
และมีหนึ่งในฟอร์แมต JSON "smart-whitespace" ที่ดีที่สุด:
หากคุณมีคำขอคุณสมบัติใด ๆ แสดงความคิดเห็นในโพสต์นี้หรือเพิ่มปัญหาใน GitHub ฉันยินดีที่จะจัดลำดับความสำคัญของคุณสมบัติที่สมาชิกในชุมชนต้องการ
wget
URL ทุก URL
underscore
ในการแยกวิเคราะห์ json ที่มีวัตถุซ้อนกันและอาร์เรย์ได้หรือไม่
มันเป็นตัวแยกวิเคราะห์ Bash JSON ที่แท้จริง
#!/bin/bash
. /path/to/ticktick.sh
# File
DATA=`cat data.json`
# cURL
#DATA=`curl http://foobar3000.com/echo/request.json`
tickParse "$DATA"
echo ``pathname``
echo ``headers["user-agent"]``
นอกจากนี้ยังมีชุดเครื่องมือประมวลผลบรรทัดคำสั่ง JSONหากคุณมี node.js และ npm ในสแต็กของคุณ
และอีกคำสั่ง "json"สำหรับการนวด JSON บนบรรทัดคำสั่ง Unix ของคุณ
และนี่คือทางเลือกอื่น ๆ :
ที่เกี่ยวข้อง: เครื่องมือบรรทัดคำสั่งสำหรับการแยกวิเคราะห์อินพุต JSON สำหรับ Unix?
npm install json
กับ
json
ดูเหมือนจะถูกครอบงำโดยแพคเกจที่แตกต่างอย่างสิ้นเชิงตอนนี้
ใครพูดถึง Jshon หรือ JSON.sh?
https://github.com/keenerd/jshon
ไปป์ที่ json แล้วมันจะเคลื่อนที่ไปตามวัตถุ json และพิมพ์พา ธ ไปยังวัตถุปัจจุบัน (เป็นอาร์เรย์ JSON) จากนั้นจึงเป็นวัตถุโดยไม่มีช่องว่าง
http://kmkeen.com/jshon/
Jshon โหลดข้อความ json จาก stdin ทำการดำเนินการจากนั้นแสดงการกระทำล่าสุดใน stdout และยังได้เป็นส่วนหนึ่งของขั้นตอนการประมวลผลข้อความตามปกติ
brew install jshon
,cat *.json | jshon
สำหรับBash / Pythonนี่คือเสื้อคลุมพื้นฐานรอบ ๆ python simplejson
:
json_parser() {
local jsonfile="my_json_file.json"
local tc="import simplejson,sys; myjsonstr=sys.stdin.read(); "`
`"myjson=simplejson.loads(myjsonstr);"
# Build python print command based on $@
local printcmd="print myjson"
for (( argn=1; argn<=$#; argn++ )); do
printcmd="$printcmd['${!argn}']"
done
local result=$(python -c "$tc $printcmd.keys()" <$jsonfile 2>/dev/null \
|| python -c "$tc $printcmd" <$jsonfile 2>/dev/null)
# For returning space-separated values
echo $result|sed -e "s/[]|[|,|']//g"
#echo $result
}
มันจัดการกับรูปแบบข้อมูลที่ซ้อนกันในพจนานุกรมเท่านั้น แต่ใช้ได้กับสิ่งที่ฉันต้องการและมีประโยชน์สำหรับการเดินผ่าน json มันอาจจะปรับให้เข้ากับรสนิยม
อย่างไรก็ตามมีบางสิ่งที่ผลิตเองสำหรับผู้ที่ไม่ต้องการแหล่งที่มาในการพึ่งพาภายนอกอื่น ยกเว้นหลามแน่นอน
อดีต json_parser {field1} {field2}
จะเรียกใช้print myjson['{field1}']['{field2}']
โดยให้คีย์หรือค่าที่เกี่ยวข้องกับ{field2}
การคั่นด้วยช่องว่าง
ฉันเพิ่งทำjkidซึ่งเป็น json explorer บรรทัดคำสั่งขนาดเล็กที่ฉันทำเพื่อสำรวจวัตถุ json ขนาดใหญ่ได้อย่างง่ายดาย วัตถุสามารถสำรวจได้ "ขวาง" และตัวเลือก "ดูตัวอย่าง" อยู่ที่นั่นเพื่อหลีกเลี่ยงคอนโซลล้น
$ echo '{"john":{"size":20, "eyes":"green"}, "bob":{"size":30, "eyes":"brown"}}' > test3.json
$ jkid . eyes test3.json
object[.]["eyes"]
{
"bob": "brown",
"john": "green"
}
jkid
ใน mac ได้อย่างไร?