از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
رشته های JSON را به عنوان اشیاء تاریخ جاوا اسکریپت تجزیه کنید
سرفصلهای مطلب
معرفی
این روزها، توسعهدهندگان تمایل دارند حجم عظیمی از دادهها را با استفاده از JSON ذخیره و انتقال دهند، که میتواند شامل تاریخ نیز باشد. برای استفاده صحیح از آنها، این رشته ها باید به صورت JS تجزیه شوند Date
اشیاء. اما چگونه این کار را انجام دهیم؟ این دقیقاً همان چیزی است که ما در این بایت کاوش خواهیم کرد.
JSON و Dates در جاوا اسکریپت
JSON یک فرمت تبادل داده سبک است که خواندن و نوشتن آن برای انسان آسان است و تجزیه و تولید آن برای ماشین ها آسان است. این یک فرمت داده رایج با کاربردهای متنوع در ذخیره و انتقال داده است.
از سوی دیگر، Date
شی یک نوع داده است که در زبان جاوا اسکریپت ساخته شده است. Date
اشیاء با ایجاد می شوند new Date( )
سازنده علیرغم نقاط قوت فراوان جاوا اسکریپت، همیشه با تاریخ و زمان کمی مشکل داشته است (از این رو بسیاری از کتابخانه های تاریخ، مانند moment
و dayjs
).
بنابراین، چه اتفاقی می افتد زمانی که شما نیاز به مدیریت تاریخ ها از یک رشته JSON در جاوا اسکریپت دارید؟ خوب، فرمت JSON فقط از تعداد کمی از انواع داده های اصلی پشتیبانی می کند: اشیا، آرایه ها، اعداد، رشته ها، بولی ها و تهی. JSON نوع تاریخ داخلی ندارد. در عوض، تاریخ ها در JSON معمولاً به صورت رشته نمایش داده می شوند.
اگر قبلا این کار را انجام نداده اید، ممکن است در ابتدا پیچیده به نظر برسد، اما تجزیه تاریخ های JSON در جاوا اسکریپت زمانی که بدانید چگونه آن را انجام دهید، ساده است.
چگونه تاریخ های JSON را در جاوا اسکریپت تجزیه کنیم
راه های مختلفی برای تجزیه تاریخ های JSON در جاوا اسکریپت وجود دارد. ما دو روش را بررسی می کنیم: استفاده از Date()
سازنده و Date.parse()
روش. در این بایت، ما تمرکز می کنیم روی با استفاده از Date()
سازنده
با استفاده از تاریخ() سازنده
را Date()
سازنده در جاوا اسکریپت یک شی تاریخ جدید با تاریخ و زمان مشخص ایجاد می کند. وقتی رشته ای را به Date()
سازنده، سعی می کند آن رشته را به یک تاریخ تجزیه کند.
در اینجا یک مثال ساده آورده شده است:
let jsonString = '{"dateOfBirth": "1402-09-26T00:00:00.000Z"}';
let obj = JSON.parse(jsonString);
let date = new Date(obj.dateOfBirth);
console.log(date);
// Output: 1402-09-26T00:00:00.000Z
در اینجا ابتدا رشته JSON را با استفاده از عبارت به یک شی جاوا اسکریپت تجزیه می کنیم JSON.parse()
روش. سپس، ما از Date()
سازنده برای تجزیه dateOfBirth
دارایی در جاوا اسکریپت Date
هدف – شی.
توجه داشته باشید: را Date()
سازنده رشته های تاریخ را در چندین فرمت می پذیرد، از جمله ISO 8601، که فرمت مورد استفاده در مثال ما است. تاریخ های ISO 8601 در قالب “YYYY-MM-DDTHH:mm:ss.sssZ” هستند، که در آن “Z” نشان دهنده زمان هماهنگ جهانی (UTC) است.
با استفاده از Date.parse() روش
را Date.parse()
روش در جاوا اسکریپت روش دیگری برای تجزیه تاریخ های JSON است. با تبدیل یک رشته تاریخ به تعداد میلی ثانیه از 1 ژانویه 1970، 00:00:00 UTC کار می کند. سپس می توان از آن برای ایجاد یک شی تاریخ جدید استفاده کرد. در این مثال همچنین روش استفاده از آن را نشان خواهیم داد JSON.parse
روشی برای تبدیل فوری رشته تاریخ به یک شی با استفاده از reviver
پاسخ به تماس
let jsonDate = '{"date":"1402-09-26T12:00:00Z"}';
let parsedDate = JSON.parse(jsonDate, function(key, value) {
if (key == 'date') return new Date(Date.parse(value));
return value;
});
console.log(parsedDate.date); // Outputs: 1402-09-26T12:00:00.000Z
در این قطعه کد از Date.parse()
در داخل JSON.parse()
روش. را Date.parse()
متد تعداد میلیثانیهها از زمان یونیکس را برمیگرداند که سپس آن را به آن ارسال میکنیم Date
سازنده برای ایجاد یک شی تاریخ جدید.
را Date.parse
این روش زمانی مفید است که می خواهید تاریخ را به عنوان یک واسطه به مهر زمانی یونیکس تبدیل کنید، که بسته به اینکه می تواند برای ذخیره سازی و گاهی اوقات برای دستکاری تاریخ نیز بهتر باشد. روی مورد استفاده شما
رسیدگی به خطاها در حین تجزیه
هنگام تجزیه تاریخ های JSON، به دلیل فرمت های تاریخ نادرست با خطاهایی مواجه می شوید. برای انجام این کار، ما معمولاً از جاوا اسکریپت داخلی استفاده می کنیم try...catch
بیانیه، اما Date
شی در این موارد خطا نمی دهد، اما در عوض برمی گردد Invalid Date
، که باید آن را بررسی کنیم:
let jsonDate = '{"date":"1402-13-01T12:00:00Z"}'; // Invalid month
let parsedDate = JSON.parse(jsonDate, function(key, value) {
if (key == 'date') return new Date(value);
return value;
});
let d = parsedDate.date;
if (d instanceof Date && !isNaN(d)) {
console.log(d);
} else {
console.log('Invalid date!');
}
در اینجا از کد زیر برای بررسی اینکه آیا تاریخ ما معتبر است یا خیر استفاده می کنیم:
d instanceof Date && !isNaN(d)
یک Invalid Date
بر خواهد گشت true
برای d instanceof Date
، اما از آنجایی که !isNaN(d)
بر خواهد گشت false
، بیانیه کلی می شود false
، و بنابراین تاریخ معتبری نیست.
راه های دیگر برای تجزیه تاریخ های JSON
در حالی که Date()
سازنده و Date.parse()
روش سادهترین روش برای تجزیه تاریخهای JSON در جاوا اسکریپت است، راهحلهای جایگزین در دسترس هستند. یکی از این راه حل ها استفاده از یک کتابخانه شخص ثالث است Moment.js.
let moment = require('moment');
let jsonDate = '{"date":"1402-09-26T12:00:00Z"}';
let parsedDate = JSON.parse(jsonDate, function(key, value) {
if (key == 'date') return moment(value).toDate();
return value;
});
console.log(parsedDate.date); // Outputs: 1402-09-26T12:00:00.000Z
ما استفاده می کنیم moment()
از کتابخانه Moment.js برای تجزیه رشته تاریخ استفاده کنید. این رویکرد می تواند به ویژه در هنگام برخورد با فرمت های پیچیده تاریخ و زمان، به ویژه فرمت های سفارشی که از هیچ استانداردی پیروی نمی کنند، مفید باشد.
توجه داشته باشید: در حالی که Moment.js یک کتابخانه قدرتمند است، اگر فقط نیاز به تجزیه رشته های تاریخ ساده داشته باشید، ممکن است بیش از حد باشد. همیشه قبل از افزودن وابستگی های خارجی به پروژه خود، نیازهای خاص خود را در نظر بگیرید. مثلاً کتابخانه dayjs بسیار سبکتر است و سینتکسی مشابه Moment دارد، اگرچه برای کارکردن برخی ویژگیها میتواند کمی تنظیمات بیشتری لازم باشد.
نتیجه
در این بایت، روشهای مختلف تجزیه تاریخهای JSON در جاوا اسکریپت را بررسی کردهایم، از جمله Date()
سازنده، Date.parse()
روش، و حتی یک کتابخانه خارجی مانند Moment.js. ما همچنین در مورد روش رسیدگی به خطاهایی که ممکن است در طول تجزیه رخ دهد بحث کرده ایم. مثل همیشه، بهترین رویکرد بستگی دارد روی نیازهای خاص شما و پیچیدگی رشته های تاریخی که با آن سروکار دارید.
(برچسبها برای ترجمه)# json
منتشر شده در 1403-01-31 13:10:05