Kiểm tra JSON API
Kiểm tra cú pháp JSON, báo đúng dòng và cột bị lỗi, và validate dữ liệu theo JSON Schema (draft 4, 7, 2019-09 hoặc 2020-12).
Gửi dữ liệu cần kiểm tra qua trường json, dưới dạng chuỗi JSON (để API báo được lỗi cú pháp) hoặc giá trị đã parse sẵn. Nếu JSON không hợp lệ, kết quả có valid_json: false và parse_error gồm thông báo lỗi, vị trí ký tự, dòng và cột. API cũng nhận body thô text/plain làm json.
Thêm schema (object hoặc chuỗi JSON) để validate dữ liệu theo JSON Schema. Chuẩn mặc định là 2020-12; đặt draft là 4, 7 hoặc 2019-09 cho schema cũ. Mỗi lỗi gồm đường dẫn path trong dữ liệu (ví dụ /age), keyword vi phạm, schema_path và message dễ đọc; trả về tối đa 200 lỗi. Nếu không có schema, API chỉ kiểm tra cú pháp.
Body request tối đa 5 MB. Schema không hợp lệ sẽ trả lỗi 400 với mã invalid_schema.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
json | body | string | có | Dữ liệu JSON cần kiểm tra: chuỗi JSON hoặc giá trị JSON bất kỳ. Cũng nhận body thô text/plain. | |
schema | body | object | không | JSON Schema (object hoặc chuỗi JSON). Nếu không có, API chỉ kiểm tra cú pháp. | |
draft | body|query | string | không | 2020-12 | Phiên bản schema: 4, 7, 2019-09 hoặc 2020-12. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/json-validator" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"name\":\"Alice\",\"age\":-3}","schema":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string"},"age":{"type":"integer","minimum":0}}}}'const res = await fetch('https://apibox.io.vn/v1/json-validator', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"json": "{\"name\":\"Alice\",\"age\":-3}",
"schema": {
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0
}
}
}
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/json-validator",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"json": "{\"name\":\"Alice\",\"age\":-3}", "schema": {"type": "object", "required": ["name", "email"], "properties": {"name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}}}},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/json-validator');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"json":"{\\"name\\":\\"Alice\\",\\"age\\":-3}","schema":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string"},"age":{"type":"integer","minimum":0}}}}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"valid": false,
"valid_json": true,
"draft": "2020-12",
"error_count": 2,
"errors": [
{
"path": "/",
"keyword": "required",
"schema_path": "#/required",
"message": "Instance does not have required property \"email\"."
},
{
"path": "/age",
"keyword": "minimum",
"schema_path": "#/properties/age/minimum",
"message": "-3 is less than 0."
}
]
}
Ứng dụng
- Validate payload request API hoặc webhook theo schema
- Kiểm tra file cấu hình JSON trong CI trước khi deploy
- Tìm đúng dòng, cột bị lỗi cú pháp JSON
- Thử nghiệm JSON Schema khi viết đặc tả API
Hỏi đáp
API hỗ trợ những phiên bản JSON Schema nào?
Draft 4, draft 7, 2019-09 và 2020-12 (mặc định). Chọn bằng tham số draft.
Làm sao biết lỗi cú pháp JSON nằm ở dòng nào?
Gửi dữ liệu dạng chuỗi trong json. Khi parse lỗi, parse_error có position, line và column nếu trình phân tích cung cấp.
Có kiểm tra cú pháp mà không cần schema được không?
Được. Bỏ trống schema, kết quả chỉ cho biết JSON có hợp lệ không, kèm ghi chú là chưa có schema.
API liên quan
Định dạng JSON
Làm đẹp JSON với thụt lề 0-8 dấu cách hoặc tab, rút gọn (minify) hoặc sắp xếp key theo bảng chữ cái. Báo lỗi cú pháp kèm dòng và cột.
CSVCSV sang JSON
Chuyển CSV thành mảng object JSON theo dòng tiêu đề, tự nhận dấu phân cách, tự chuyển số và boolean, báo lỗi từng dòng.
J→CJSON sang CSV
Chuyển mảng JSON gồm object hoặc mảng thành CSV có dòng tiêu đề, tuỳ chọn dấu phân cách, trả về JSON hoặc file text/csv để tải về.