นี่เป็นวิธีที่ง่ายขึ้นอยู่กับjtc
ยูทิลิตี้ยูนิกซ์:
bash $ jtc -w'<.*>D:' -eu echo '"{}"' \; file.json
{
"amount": "1000",
"country": "GB",
"customer": "user",
"id": "1",
"plate": "BMT-216-A",
"pndNumber": "20000",
"zoneNumber": "4"
}
bash $
หากคุณต้องการใช้การเปลี่ยนแปลงในไฟล์ json ให้ใช้-f
สวิตช์ดังนี้:
bash $ jtc -f -w'<.*>D:' -eu echo '"{}"' \; file.json
โซลูชันที่เสนอจะทำงานอย่างถูกต้องกับ jsons ที่มีโครงสร้างตามอำเภอใจเช่น:
bash $ jtc -w'<.*>D:' -eu echo '"{}"' \; file.json
{
"amount": "1000",
"country": "GB",
"customer": "user",
"id": "1",
"plate": "BMT-216-A",
"pndNumber": "20000",
"sub": {
"subvalue": "123"
},
"zoneNumber": "4"
}
bash $
- ถ้าคุณชอบที่จะพูดค่า null เพียงแค่โยนในเส้นทางเดิน
-w'<>n:'
- ถ้าคุณชอบที่จะพูดค่าบูลีนโยนในเส้นทางเดิน
-w'<any>b:'
นอกจากนี้งานย้อนกลับ (unquote ตัวเลขทั้งหมด) สามารถทำได้ง่ายในลักษณะที่คล้ายกัน: พูดว่าfile.json
มีอยู่แล้ว "enquoted" เพื่อยกเลิกการอ้างถึงตัวเลขทั้งหมด:
bash $ jtc -w'<^\d+$>R:' -eu echo {-} \; file.json
{
"amount": 1000,
"country": "GB",
"customer": "user",
"id": 1,
"plate": "BMT-216-A",
"pndNumber": 20000,
"zoneNumber": 4
}
bash $
อัปเดต : เวอร์ชันล่าสุดของjtc
การดำเนินการในขณะนี้เทมเพลตและเนมสเปซ เมื่อไม่ต้องการการเรียกใช้เปลือกภายนอก:
bash $ jtc -w'<.*>D:' -u'<.*>D:<val>v' -T'"{val}"' file.json
{
"amount": "1000",
"country": "GB",
"customer": "user",
"id": "1",
"plate": "BMT-216-A",
"pndNumber": "20000",
"zoneNumber": "4"
}
jtc
คู่มือผู้ใช้: https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.md
{"a":{"b":1},"b":null}
เป็น{ "a": "{\"b\":1}", "b": "null" }