از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
حل خطای «پایان غیرمنتظره ورودی JSON» در جاوا اسکریپت
سرفصلهای مطلب
معرفی
جاوا اسکریپت Object Notation یا JSON یکی از رایج ترین فرمت های داده با کاربردهای متنوع در ذخیره سازی و انتقال داده است. با این حال، مانند هر کار برنامه نویسی دیگری، ممکن است هنگام کار با آن با خطاهایی مواجه شوید. یکی از خطاهای رایج در جاوا اسکریپت، خطای «پایان غیرمنتظره ورودی JSON» است. این بایت درباره این خطا، علل آن و روش رفع آن بحث خواهد کرد.
درک خطا
خطای «پایان غیرمنتظره ورودی JSON» اغلب زمانی رخ میدهد که یک سند JSON خالی را تجزیه میکنید. این JSON.parse()
متد در جاوا اسکریپت برای گرفتن یک رشته JSON و تبدیل آن به یک شی جاوا اسکریپت استفاده می شود. اگر یک رشته خالی را به JSON.parse()
روش، خطا می دهد زیرا انتظار رشته ای با ساختار JSON معتبر را دارد.
let data = '';
let jsonData = JSON.parse(data); // Uncaught SyntaxError: Unexpected end of JSON input
در مثال بالا، یک رشته خالی به قسمت ارسال می شود JSON.parse()
روش، منجر به خطای «پایان غیرمنتظره ورودی JSON» می شود.
تبدیل رشته JSON در جاوا اسکریپت
برای درک بهتر خطا، اجازه دهید در مورد روش عملکرد تبدیل رشته JSON در جاوا اسکریپت بحث کنیم. این JSON.parse()
متد یک رشته JSON را به یک شی جاوا اسکریپت تبدیل می کند. توجه به این نکته مهم است که ورودی باید رشته ای باشد که ساختار JSON معتبر را نشان دهد.
let data = '{"name":"John", "age":30, "city":"New York"}';
let jsonData = JSON.parse(data);
console.log(jsonData);
در console، خروجی را به صورت زیر خواهید دید:
{ name: 'John', age: 30, city: 'New York' }
این JSON.parse()
متد با موفقیت رشته JSON را به یک شی جاوا اسکریپت تبدیل می کند.
پاسخ سرور خالی احتمالی
یکی از سناریوهای رایج که در آن خطای «پایان غیرمنتظره ورودی JSON» رخ میدهد، زمانی است که دادهها را از یک سرور واکشی میکنید. اگر سرور یک پاسخ خالی برگرداند و شما سعی کنید آن را با آن تجزیه کنید JSON.parse()
، خطا پرتاب می شود.
کد زیر را در نظر بگیرید:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
اگر سرور در https://api.example.com/data
یک پاسخ خالی برمی گرداند، با خطا مواجه خواهید شد. این به این دلیل است که response.json()
روش استفاده داخلی JSON.parse()
برای تبدیل پاسخ سرور به یک شی جاوا اسکریپت. اگر پاسخ خالی باشد، چیزی برای تجزیه وجود ندارد و در نتیجه خطا ایجاد می شود.
اجرای Try/Catch for Error Handling
یک روش خوب هنگام برخورد با تجزیه JSON در جاوا اسکریپت، پیاده سازی یک بلوک try/catch است. این به شما این امکان را میدهد تا خطاهایی را که ممکن است در طول تجزیه رخ دهد، پیدا کنید process و به جای اینکه اجازه دهید فیلمنامه شکست بخورد، آنها را با ظرافت مدیریت کنید.
در اینجا یک مثال ساده آورده شده است:
let json;
try {
json = JSON.parse(input);
} catch (e) {
console.error("Invalid JSON:", e);
}
در این مثال، اگر ورودی یک رشته JSON معتبر نباشد، JSON.parse()
تابع یک خطا ایجاد می کند. سپس بلوک catch این خطا را دریافت کرده و آن را وارد می کند console.
توجه داشته باشید: به یاد داشته باشید که catch
بلوک فقط در صورتی اجرا می شود که خطایی در آن ایجاد شود try
مسدود کردن. پس از آن باید یا با ظرافت از برنامه خارج شوید یا مواردی را که اعتباری ندارید رسیدگی کنید json
چیزی که مد نظر شماست
اعتبار سنجی JSON یا حذف JSON.parse()
اگر مطمئن نیستید ورودی دریافتی شما JSON معتبر است، میتوانید آن را قبل از تجزیه تأیید کنید. چندین کتابخانه برای این منظور موجود است، مانند jsonlint.
از آنجایی که بسیاری از مشکلات قالببندی با JSON وجود دارد، بهترین گزینه ممکن است این باشد که خودتان رشته JSON را به صورت دستی بررسی کنید تا ببینید مشکل چیست و چگونه آن را برطرف کنید. به عنوان مثال، در نظر بگیرید که رشته JSON زیر را دارید، input
:
{
"make": "Honda",
"model": "Civic"
},
{
"make": "Ford",
"model": "Mustang"
}
ممکن است متوجه شوید که این JSON معتبر نیست، زیرا به نظر میرسد آرایهای از اشیاء دارد، اما بدون براکت (()
) اطراف آن. اگر انتظار دارید این JSON نامعتبر را دریافت کنید و نمی توانید مشکل را در منبع برطرف کنید، می توانید سعی کنید خودتان آن را با کد برطرف کنید:
input = `(${input})`;
json = JSON.parse(input);
نتیجه
درک و مدیریت خطای “پایان غیرمنتظره ورودی JSON” در جاوا اسکریپت برای هر توسعه دهنده ای که با داده های JSON کار می کند مهم است. با استفاده از بلوکهای try/catch برای مدیریت خطا و اعتبارسنجی ورودی JSON قبل از تجزیه، میتوانید اطمینان حاصل کنید که کد شما کمتر در معرض خطاهای احتمالی است. همیشه به یاد داشته باشید که خطاها را با ظرافت مدیریت کنید و بازخورد واضحی را به کاربر ارائه دهید!
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1402-12-31 18:55:11