Đây là một giải pháp dễ dàng dựa trên jtc
tiện ích unix:
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 $
nếu bạn muốn áp dụng các thay đổi ngay vào tệp json, hãy sử dụng công -f
tắc, như thế này:
bash $ jtc -f -w'<.*>D:' -eu echo '"{}"' \; file.json
Giải pháp đề xuất sẽ hoạt động chính xác với một jsons có cấu trúc tùy ý, ví dụ:
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 $
- nếu bạn muốn trích dẫn các giá trị null, chỉ cần ném vào một lối đi
-w'<>n:'
- nếu bạn muốn trích dẫn các giá trị boolean, hãy đi bộ
-w'<any>b:'
Ngoài ra, tác vụ đảo ngược (bỏ tất cả các số) có thể dễ dàng đạt được theo cách tương tự: giả sử, file.json
đã được "liệt kê", để bỏ qua tất cả các số:
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 $
CẬP NHẬT : phiên bản mới nhất của jtc
thực hiện bây giờ các mẫu và không gian tên. Với điều đó, không yêu cầu vỏ bên ngoài được yêu cầu:
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
hướng dẫn sử dụng: https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.md
{"a":{"b":1},"b":null}
thành{ "a": "{\"b\":1}", "b": "null" }