از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه JSON را به شی جاوا اسکریپت تبدیل کنیم. از همان نمادی استفاده میکند که برای تعریف اشیاء جاوا اسکریپت استفاده میشود و طبیعتاً تبدیل بین یک رشته JSON و اشیاء جاوا اسکریپت بسیار ساده است.
سرفصلهای مطلب
JSON (نشانگذاری شی جاوا اسکریپت) به دلیل اینکه برای انسان قابل خواندن، ساده و اندازه کوچک است، تبدیل به فرمت سریال سازی واقعی برای REST APIها شده است.
از همان نمادی استفاده میکند که برای تعریف اشیاء جاوا اسکریپت استفاده میشود، و طبیعتاً تبدیل بین یک رشته JSON و اشیاء جاوا اسکریپت بسیار ساده است.
ما با رشته JSON زیر کار خواهیم کرد:
const jsonString = '{"author" : "Plato", "name" : "Republic", "releaseYear" : "375BC"}';
رشته JSON را به شی جاوا اسکریپت تبدیل کنید
این JSON
ماژول دو روش ارائه می دهد – stringify()
، که یک شی جاوا اسکریپت را به یک رشته JSON تبدیل می کند و parse()
، که یک رشته JSON را تجزیه می کند و یک شی جاوا اسکریپت را برمی گرداند.
در خود زبان تعبیه شده است، بنابراین نیازی به نصب یا نصب نیست import هر گونه وابستگی:
const book = JSON.parse(jsonString);
console.log('Type: ', typeof book);
console.log('Contents: ', book)
این منجر به:
Type: object
Contents:
{
author:"Plato",
name:"Republic",
releaseYear:"375BC"
}
ممکن است وسوسه شوید eval()
یک رشته به یک شی، اما از تمرین خسته باشید:
const book = eval("(" + jsonString + ")")
console.log('Type: ', typeof book);
console.log('Contents: ', book)
این به خوبی کار می کند:
Type: object
Contents:
{
author:"Plato",
name:"Republic",
releaseYear:"375BC"
}
با این حال، این روش نیز مستعد تزریق کد است. eval()
هر متن دلخواه را که در آن قرار داده اید ارزیابی و اجرا می کند، مشروط بر اینکه قابل اجرا باشد. اگر ما jsonString
به :
const jsonString = 'console.log("Malicious code")';
سپس فقط ارزیابی آن به این نتیجه می رسد:
const book = eval("(" + jsonString + ")")
// Malicious code
در نهایت درست است که جاوا اسکریپت تا حد زیادی اجرا می شود، روی ماشین مشتری، روی که آنها می توانند هر کدی را که می خواهند در مرورگر ارزیابی و اجرا کنند. با این حال، یک تغییر پارادایم بزرگ در سال های اخیر رخ داده است و جاوا اسکریپت بیشتر و بیشتر مورد استفاده قرار می گیرد. روی را سمت سرور همچنین. حتی اگر امنیت کد تزریق در نهایت سقوط کند روی سمت سرور، زیرا واقعا نمی توانید از آن جلوگیری کنید روی قسمت جلویی – این احتمال وجود دارد که جاوا اسکریپت اجرا شود روی سمت سرور نیز
رشته JSON را به آرایه جاوا اسکریپت تبدیل کنید
اگرچه میتوانید JSON را به هر شی دلخواه تجزیه کنید – یک ساختار داده رایج که دادهها را به آن تبدیل میکنید آرایههایی هستند. آرایههای JSON در داخل پرانتز قرار دارند و عناصر آرایهها با کاما از هم جدا میشوند:
(element1, element2, element3)
یک عنصر می تواند یک عنصر مستقل، یک شی JSON دیگر یا یک آرایه دیگر باشد که به نوبه خود می تواند هر یک از این انواع را نیز داشته باشد. بیایید نگاهی به دو آرایه بیندازیم – یک آرایه ساده با چند عنصر و یکی که حاوی چندین شی JSON است:
const simpleArrayJson = '("Java", "Python", "JavaScript")';
const objectArrayJson = '({"name": "Java", "description": "Java is a class-based, object-oriented programming language."},{"name": "Python", "description": "Python is an interpreted, high-level and general-purpose programming language."}, {"name": "JS", "description": "JS is a programming language that conforms to the ECMAScript specification."})';
const simpleArray = JSON.parse(simpleArrayJson);
const objectArray = JSON.parse(objectArrayJson);
console.log(simpleArray);
console.log(objectArray);
این منجر به:
(
"Java",
"Python",
"JavaScript"
)
(
{
name:"Java",
description:"Java is a class-based, object-oriented programming language."
},
{
name:"Python",
description:"Python is an interpreted, high-level and general-purpose programming language."
},
{
name:"JS",
description:"JS is a programming language that conforms to the ECMAScript specification."
}
)
نتیجه
در این آموزش کوتاه، روش تبدیل یک رشته JSON به یک شی جاوا اسکریپت را بررسی کردهایم و به روشی بد اشاره کردهایم که میتواند آسیبپذیریهایی را در کد شما ایجاد کند.
منتشر شده در 1403-01-13 09:36:05