JSON পরীক্ষক
উন্নত অনলাইন JSON সিনট্যাক্স ভ্যালিডেটর এবং স্কিমা চেকার—সম্পূর্ণ ব্রাউজার ভিত্তিক এবং গোপনীয়তা প্রধান।
আপনার JSON তৎক্ষণাৎ যাচাই করুন
এই বিনামূল্যের অনলাইন JSON ভ্যালিডেটরটি আপনাকে সাথে সাথে আপনার JSON ডেটাকে সিনট্যাক্স ত্রুটি এবং কাঠামোগত সমস্যার জন্য পরীক্ষা করার সুযোগ দেয়। আপনি হোক কাঁচা API প্রতিক্রিয়া, কনফিগারেশন ফাইল, অথবা গঠনবদ্ধ পে-লোড যাচাই করছেন, আমাদের টুলটি সমস্যা গুলো রিয়েল টাইমে হাইলাইট করে এবং স্বয়ংক্রিয় সমাধানও প্রদান করে। আরও কঠোর যাচাইয়ের জন্য, একটি JSON স্কিমা যোগ করুন এবং আবশ্যক ক্ষেত্র, নির্দিষ্ট টাইপ ও ফরম্যাট (ইমেইল, URI ইত্যাদি) এর মতো নিয়ম প্রয়োগ করুন। এই টুলটি JSON স্কিমা ড্রাফট-07 এর সাথে সম্পূর্ণ সঙ্গতিপূর্ণ। সমস্ত প্রসেসিং আপনার ব্রাউজারেই হয়—আপনার ডেটা আপনার যন্ত্র থেকে কখনো বের হয় না।
JSON ভ্যালিডেশন কী?
JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন) হচ্ছে একটি ব্যাপকভাবে ব্যবহৃত, হালকা ওজনের ডেটা বিনিময় ফরম্যাট, যা মানুষের জন্য পড়তে সহজ এবং মেশিনের জন্য বিশ্লেষণ ও তৈরি করতে সহজ হওয়ার জন্য ডিজাইন করা হয়েছে। এর প্রধান উদ্দেশ্য হলো কাঠামোবদ্ধ ডেটা—অবজেক্ট, অ্যারে, স্ট্রিং, সংখ্যা, বুলিয়ান, এবং নাল—একটি ভাষা-নিরপেক্ষ উপায়ে উপস্থাপন করা।
JSON বৈধতা হল প্রোগ্রাম্যাটিকভাবে যাচাই করার প্রক্রিয়া যে একটি JSON ডকুমেন্টটি ব্যাকরণগত এবং কাঠামোগতভাবে সঠিক কিনা। এতে দুটি প্রধান দিক পরীক্ষা করা হয়:
- বাক্যের গঠন সঠিকতা যাচাই: নিশ্চিত করা যে র ভাস্কর্য পাঠ্য ECMA-404 JSON স্পেসিফিকেশনের দ্বারা নির্ধারিত আনুষ্ঠানিক ব্যাকরণ অনুসরণ করে। বেশিরভাগ আধুনিক প্রোগ্রামিং ভাষার পার্সারগুলো (যেমন, জাভাস্ক্রিপ্টে JSON.parse(), পাইথনে json.loads(), জাভায় JSONDecoder) বৈধ সিনট্যাক্স প্রত্যাশা করে এবং যদি ইনপুট ভুল হয় তবে ত্রুটি দেখায়।
- স্ট্রাকচারাল (স্কিমা) যাচাই: সংজ্ঞা ছাড়াও, স্কিমা যাচাই নিশ্চিত করে যে JSON ডেটা প্রত্যাশিত কাঠামোর সাথে মিলছে, যার মধ্যে রয়েছে ডেটা প্রকার, প্রয়োজনীয় বৈশিষ্ট্য, মান সীমাবদ্ধতা, এবং অন্দর্লিখিত অবজেক্ট/অ্যারেগুলি। স্কিমা যাচাই সাধারণত JSON স্কিমা ব্যবহার করে করা হয়, যা বৈধ ডেটার নিয়মসমূহ নির্ধারণ করে।
JSON যাচাই কেন প্রয়োজন?
যেখানেই ডেটা প্রেরণ, সংরক্ষণ বা আন্তঃসেবা যোগাযোগের জন্য সিরিয়ালাইজড হয়, সেখানে JSON বৈধতা অত্যন্ত গুরুত্বপূর্ণ। প্রধান কারণগুলো হলো:
- ত্রুটি প্রতিরোধ: ডেটা প্রক্রিয়াকরণের চেষ্টা করার আগে সিনট্যাক্স ত্রুটি (যেমন, কমা অনুপস্থিত থাকা, অসমঞ্জস বন্ধনী, অবৈধ অক্ষর) দ্রুত সনাক্ত ও রিপোর্ট করুন।
- ডেটা অখণ্ডতা ও সুরক্ষা: ত্রুটিপূর্ণ বা দূষিত JSON পে-লোড প্রত্যাখ্যান করুন, যা ব্যাকএন্ড ক্র্যাশ, ইনজেকশন আক্রমণ বা ডেটা ক্ষতির ঝুঁকি কমায়।
- টাইপ সেফটি: কঠোর টাইপিং প্রয়োগ করুন—উদাহরণস্বরূপ, একটি ক্ষেত্র যা বুলিয়ান হওয়া প্রত্যাশিত তা স্ট্রিং হিসেবে পাঠানো না হয়, অথবা UUID, ইমেল বা নম্বরগুলি সঠিক ফরম্যাট অনুসরণ করে তা নিশ্চিত করুন।
- ক্রস-ল্যাঙ্গুয়েজ সামঞ্জস্যতা: নিশ্চিত করুন যে একটি পরিবেশে (যেমন, Node.js) তৈরি JSON অন্য কোনও পরিবেশে (যেমন, Python, Go, Java) নিরাপদে ব্যবহারযোগ্য হবে, যাতে সিরিয়ালাইজেশন/ডেসিরিয়ালাইজেশন বাগ এড়ানো যায়।
- রক্ষণাবেক্ষণযোগ্যতা ও দৃঢ়তা: যাচাই করা ডেটা কাঠামো ট্রেসযোগ্যতা উন্নত করে এবং কনফিগারেশন ফাইল, লগ, অথবা API অনুরোধ/প্রতিক্রিয়াগুলিতে ডিবাগ করা কঠিন ত্রুটির ঝুঁকি কমায়।
- গোপনীয়তা ও নিরাপত্তা: যাচাইকরণ সম্পূর্ণ ক্লায়েন্ট-সাইডে (ব্রাউজারে) অনুষ্ঠিত হতে পারে, যা ব্যবহারকারীর ডিভাইস থেকে কোনও কাঁচা বা সংবেদনশীল তথ্য যাচাইয়ের জন্য বাইরে যাওয়া রোধ করে।
সাধারণ JSON যাচাইকরণ ত্রুটি (বিস্তারিত উদাহরণের সঙ্গে)
কোটেশনহীন কি
JSON অবজেক্টে সব কী-সমূহ ডাবল-কোটেড স্ট্রিং হতে হবে।
{ নাম: "অ্যালিস" }
{ "name": "অ্যালিস" }
অনেক JSON-এর সদৃশ ফরম্যাট (যেমন, জাভাস্ক্রিপ্ট অবজেক্ট লিটারাল) উন্মুক্ত কী অনুমোদন করে, তবে স্ট্যান্ডার্ড JSON তা স্বীকৃতি দেয় না।
একক উদ্ধৃতি
JSON স্ট্রিংগুলো শুধুমাত্র ডাবল কোটেশন মার্ক ব্যবহার করতে হবে; সিঙ্গেল কোটেশন অনুমোদিত নয়।
{ 'name': 'বব' }
{ "name": "বব" }
একক উদ্ধরণ চিহ্ন ব্যবহারে সমস্ত সম্মত JSON লাইব্রেরিতে পার্সার ত্রুটি হবে।
ট্রেইলিং কমা
অবজেক্ট বা অ্যারে-র শেষ আইটেমের পরে কোনও অতিরিক্ত কমা থাকবে না।
{ "a": ১, "b": ২, }
{ "a": ১, "b": ২ }
ট্রেইলিং কমা জাভাস্ক্রিপ্টে কাজ করতে পারে, কিন্তু কঠোর JSON পার্সারে এটি কাজ করে না।
অন্যথায় পাওয়া অক্ষরগুলি
স্ট্রিং-এর ভিতরে কোটস এবং বিশেষ অক্ষর ব্যাকস্ল্যাশ ব্যবহার করে এড়ানো আবশ্যক।
{ "quote": "টম জানালেন \"হ্যালো\"" }
{ "quote": "টম বললো \"হ্যালো\"" }
অন্যান্য এস্কেপ সিকোয়েন্সগুলোর মধ্যে রয়েছে ব্যাকস্ল্যাশের জন্য \\ , নতুন লাইন দেওয়ার জন্য \n , এবং ট্যাবের জন্য \t ।
ভূল ডেটা টাইপ
সংখ্যা, বুলিয়ান, বা নাল এর জন্য স্ট্রিং ব্যবহার করা উচিত নয়।
{ "enabled": "সক্রিয়", "count": "১০" }
{ "enabled": true, "count": 10 }
JSON বুলিয়ান, সংখ্যা এবং স্ট্রিং এর মধ্যে পার্থক্য করে—সঠিক ধরনের ব্যবহার নিশ্চিত করুন।
অবজৈব কী
JSON অবজেক্টের কি সর্বদা স্ট্রিং হতে হবে; আপনি সংখ্যা, বুলিয়ান বা অন্যান্য ধরনের ডেটা কী হিসেবে ব্যবহার করতে পারবেন না।
{ 123: "এবিসি" }
{ "123": "এবিসি" }
অনুলিপি কী
যদিও JSON স্পেক দ্বারা অনুমোদিত, ডুপ্লিকেট কীগুলো সাধারণত বাগের অন্যতম প্রধান কারণ।
{ "name": "অ্যালিস", "name": "বব" }
অধিকাংশ পার্সার শুধুমাত্র সর্বশেষ মানটি ("বব") রাখে এবং আগের মানগুলি নিঃশব্দে পরিত্যাগ করে।
মন্তব্য ব্যবহারের নির্দেশিকা
স্ট্যান্ডার্ড JSON মন্তব্য সমর্থন করে না, যদিও কিছু সম্পাদক এগুলো সমর্থন করে।
{ // ব্যবহারকারীর তথ্য "name": "অ্যালিস" }
{ "name": "অ্যালিস" }
স্কিমা যাচাইকরণ: কাঠামো এবং ডেটা টাইপ নিয়ন্ত্রণ
JSON স্কিমা হল JSON ডকুমেন্টগুলোর প্রত্যাশিত কাঠামো নির্ধারণ এবং যাচাই করার জন্য একটি শক্তিশালী স্ট্যান্ডার্ড। এটি আপনাকে নির্দিষ্ট করতে দেয়:
- আবশ্যক ক্ষেত্রসমূহ (`required`)
- ডেটা টাইপসমূহ (`type`: স্ট্রিং, সংখ্যা, বুলিয়ান, অবজেক্ট, অ্যারে, নাল)
- স্ট্রিং ফরম্যাটসমূহ (`format`: ইমেইল, UUID, তারিখ-সময়, ইত্যাদি)
- স্ট্রিংয়ের জন্য প্যাটার্ন ম্যাচিং (`pattern`)
- সংখ্যার পরিসীমা (`সর্বনিন্ম`, `সর্বোচ্চ`)
- অ্যারে দৈর্ঘ্য এবং আইটেম যাচাই ( `minItems`, `maxItems`, `items`)
- অবজেক্ট এবং অ্যারের জন্য নেস্টেড ভ্যালিডেশন
- এনাম বাধ্যবাধকতা (`enum`)
উদাহরণ: ব্যবহারকারী স্কিমা (ড্রাফট-০৭)
{ "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string", "minLength": 1, "description": "ব্যবহারকারীর নাম" }, "email": { "type": "string", "format": "email", "description": "ইমেইল ঠিকানা" }, "is_active": { "type": "boolean", "description": "সক্রিয় কি না" } }, "required": ["id", "name", "email"], "additionalProperties": false }
এটি যা প্রয়োগ করে:
- আইডি অবশ্যই একটি বৈধ UUID স্ট্রিং হতে হবে।
- নাম অবশ্যই একটি খালি নয় এমন স্ট্রিং হতে হবে।
- ইমেইল অবশ্যই মানক ইমেইল ফরম্যাটের সাথে মিলতে হবে।
- is_active (ঐচ্ছিক) অবশ্যই একটি বুলিয়ান হতে হবে।
- উপরোক্ত সংজ্ঞায়িত ছাড়া অন্য কোনও সম্পত্তি অনুমোদিত নয়।
বাস্তব উদাহরণ: স্ট্রাইপ এপিআই প্রতিক্রিয়াগুলি যাচাই করা
ধরা যাক আপনি Stripe API থেকে JSON উত্তর গ্রহণ করছেন (যেমন, PaymentIntent)। স্কিমা ভ্যালিডেশন নিশ্চিত করতে পারে যে আপনি কখনই অসম্পূর্ণ বা ভুল টাইপের ডেটা প্রক্রিয়াজাত করবেন না।
{ "type": "object", "properties": { "id": { "type": "string", "pattern": "^pi_" }, "object": { "type": "string", "const": "payment_intent" }, "amount": { "type": "integer", "minimum": 1 }, "currency":{ "type": "string", "minLength": 3, "maxLength": 3 }, "status": { "type": "string", "enum": [ "পেমেন্ট_মেথড_প্রয়োজন", "নিশ্চিতকরণের_প্রয়োজন", "প্রক্রিয়াকরণ", "সফল", "বাতিল" ]} }, "required": ["id", "object", "amount", "currency", "status"], "additionalProperties": false }
- আইডি অবশ্যই "pi_" দিয়ে শুরু হওয়া চাই
- বস্তু অবশ্যই সর্বদা "payment_intent" হতে হবে
- পরিমাণ অবশ্যই একটি পূর্ণসংখ্যা হতে হবে যা ১ অথবা তার বেশি
- মুদ্রা অবশ্যই তিন-অক্ষরের স্ট্রিং হতে হবে (যেমন, "usd", "eur")
- স্ট্যাটাস অবশ্যই নির্দিষ্ট মানের মধ্যে থেকে হতে হবে
সুবিধাসমূহ
- প্রারম্ভিক ত্রুটি সনাক্তকরণ: আপনার ব্যবসায়িক লজিকে পৌঁছানোর আগেই ব্রেকিং API পরিবর্তন বা অসম্পূর্ণ ডেটা ধরুন।
- স্বয়ংক্রিয় টেস্টিং: প্রকৃত এবং মক প্রতিক্রিয়া যাচাই করার জন্য CI/CD পাইপলাইনে স্কিমা ব্যবহার করুন।
- ক্রস-টিম সামঞ্জস্যতা: ফ্রন্টএন্ড, ব্যাকএন্ড এবং তৃতীয়-পক্ষের API এর মধ্যে ডেটা চুক্তিগুলো স্ট্যান্ডার্ডাইজ করুন।
সঠিক JSON যাচাইকরণ—যা সিনট্যাক্স এবং স্কিমা উভয়ই কাভার করে—সূক্ষ্ম ত্রুটি প্রতিরোধ করে, সেরা অনুশীলনগুলো নিশ্চিত করে, এবং আপনার অ্যাপ্লিকেশনকে ভুল বা দুর্বৃত্ত ইনপুট থেকে সুরক্ষিত রাখে। কনফিগারেশন ফাইল, API পে-লোড, অথবা সেবার মধ্যে বার্তা আদানপ্রদানে ব্যবহার হোক, দৃঢ় যাচাইকরণ আধুনিক সফটওয়্যার সিস্টেমের ভিত্তি হিসেবে কাজ করে।
গোপনীয়তা ও নিরাপত্তা
সমস্ত ভ্যালিডেশন এবং স্কিমা পরীক্ষাগুলি আপনার ব্রাউজারে স্থানীয়ভাবে সম্পন্ন হয়। কোনও ডেটা আপলোড বা লগ হয় না। আপনার JSON সম্পূর্ণরূপে ব্যক্তিগত থাকে।
JSON ভ্যালিডেশনের জন্য কোড উদাহরণ
বিল্ট-ইন লাইব্রেরি বা জনপ্রিয় ফ্রেমওয়ার্ক ব্যবহার করে বিভিন্ন প্রোগ্রামিং ভাষায় JSON কীভাবে বৈধতা যাচাই করবেন দেখুন। এই উদাহরণগুলি সিনট্যাক্স যাচাইকরণ এবং স্কিমা যাচাইকরণের উভয়ই প্রদর্শন করে।
const jsonString = '{"name":"Alice","age":30}';
try {
const obj = JSON.parse(jsonString);
console.log("Valid JSON:", obj);
} catch (e) {
console.error("Invalid JSON!", e.message);
}
const Ajv = require("ajv");
const ajv = new Ajv();
const schema = { type: "object", properties: { age: { type: "integer" } }, required: ["age"] };
const data = { age: 30 };
const validate = ajv.compile(schema);
console.log(validate(data) ? "Valid!" : ajv.errorsText(validate.errors));
import json
try:
obj = json.loads('{"name":"Alice","age":30}')
print("Valid JSON:", obj)
except json.JSONDecodeError as e:
print("Invalid JSON:", e)
import json, jsonschema
schema = {
"type": "object",
"properties": { "age": { "type": "integer" } },
"required": ["age"]
}
data = {"age": 30}
try:
jsonschema.validate(data, schema)
print("Valid!")
except jsonschema.ValidationError as e:
print("Schema validation error:", e)
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := []byte(`{"name":"Alice","age":30}`)
var obj map[string]interface{}
if err := json.Unmarshal(data, &obj); err != nil {
fmt.Println("Invalid JSON:", err)
} else {
fmt.Println("Valid JSON:", obj)
}
}
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
String json = "{"name":"Alice","age":30}";
try {
Object obj = new ObjectMapper().readTree(json);
System.out.println("Valid JSON: " + obj);
} catch (Exception e) {
System.out.println("Invalid JSON: " + e.getMessage());
}
}
}
using System;
using System.Text.Json;
class Program {
static void Main() {
string json = "{"name":"Alice","age":30}";
try {
var doc = JsonDocument.Parse(json);
Console.WriteLine("Valid JSON!");
} catch (JsonException e) {
Console.WriteLine("Invalid JSON: " + e.Message);
}
}
}
<?php
$json = '{"name":"Alice","age":30}';
$obj = json_decode($json);
if (json_last_error() === JSON_ERROR_NONE) {
echo "Valid JSON";
} else {
echo "Invalid JSON: " . json_last_error_msg();
}
require 'json'
begin
obj = JSON.parse('{"name":"Alice","age":30}')
puts "Valid JSON!"
rescue JSON::ParserError => e
puts "Invalid JSON: #{e.message}"
end
echo '{"name":"Alice","age":30}' | jq empty && echo "Valid" || echo "Invalid"
fn main() {
let data = r#"{"name":"Alice","age":30}"#;
match serde_json::from_str::<serde_json::Value>(data) {
Ok(_) => println!("Valid JSON!"),
Err(e) => println!("Invalid JSON: {}", e),
}
}
import org.json.JSONObject
fun main() {
try {
val obj = JSONObject("{\"name\":\"Alice\",\"age\":30}")
println("Valid JSON: $obj")
} catch (e: Exception) {
println("Invalid JSON: ${e.message}")
}
}
import Foundation
let json = "{\"name\":\"Alice\",\"age\":30}"
if let data = json.data(using: .utf8) {
do {
let _ = try JSONSerialization.jsonObject(with: data)
print("Valid JSON!")
} catch {
print("Invalid JSON: \(error)")
}
}
const jsonString = '{"name":"Alice","age":30}';
try {
const obj = JSON.parse(jsonString);
console.log("Valid JSON:", obj);
} catch (e) {
console.error("Invalid JSON!", e.message);
}
SELECT '{"name":"Alice","age":30}'::jsonb; -- Will error if not valid JSON
SELECT JSON_VALID('{"name":"Alice","age":30}');
$json = '{"name":"Alice","age":30}'
try {
$obj = $json | ConvertFrom-Json
Write-Output "Valid JSON!"
} catch {
Write-Output "Invalid JSON: $($_.Exception.Message)"
}
use JSON;
my $str = '{"name":"Alice","age":30}';
eval { decode_json($str) };
print $@ ? "Invalid JSON: $@" : "Valid JSON!";
import 'dart:convert';
void main() {
const jsonString = '{"name":"Alice","age":30}';
try {
final obj = jsonDecode(jsonString);
print('Valid JSON: $obj');
} catch (e) {
print('Invalid JSON: $e');
}
}
json = ~s({"name":"Alice","age":30})
case Jason.decode(json) do
{:ok, _} -> IO.puts("Valid JSON!")
{:error, err} -> IO.puts("Invalid JSON: #{err}")
end
import play.api.libs.json._
object Main extends App {
val str = """{"name":"Alice","age":30}"""
try {
val json = Json.parse(str)
println("Valid JSON!")
} catch {
case e: Exception => println("Invalid JSON: " + e.getMessage)
}
}
এই টুল সম্পর্কে
এই টুলটি তৈরি করেছেন ইটসেলফ টুলস এর দল, যারা দ্রুত, গোপনীয়তা-প্রাধান্যপ্রাপ্ত অনলাইন ইউটিলিটিগুলির একটি বিস্তৃত পরিসর তৈরি করেছে যা বিশ্বব্যাপী লক্ষ লক্ষ ব্যবহারকারীর দ্বারা ব্যবহৃত হয়। সরলতা, গতি এবং নির্ভরযোগ্যতাকে অগ্রাধিকার দিয়ে ব্রাউজার ভিত্তিক টুল তৈরি করার বহু বছরের অভিজ্ঞতা নিয়ে, আমরা এই ধরনের ডেভেলপার-মুখী অ্যাপ্লিকেশনে প্রবেশ করেছি—এটি প্রোগ্রামার, বিশ্লেষক এবং ডিজিটাল পেশাদারদের জন্য প্রযুক্তিগত কাজগুলোকে সহজতর করার উদ্দেশ্যে ডিজাইন করা হয়েছে।