تایپاسکریپت - باید دوبار JSON.parse انجام داد تا شیء JSON را از کد QR رشتهای استخراج کرد
من مقداری JSON دارم
{
id: "abcd",
type: "receive"
}
که من آن را رشتهای کردم و یک کد QR با استفاده از یک سازنده کد QR آنلاین ایجاد کردم. در اپلیکیشن React Native خود، من از react-native-qrcode-scanner برای اسکن این کد QR استفاده میکنم که یک تابع onSuccess(qrCode: Event) را فرا میخواند.
من تابع را به صورت زیر تنظیم کردهام:
function onSuccess(qrCode: Event) {
console.log(qrCode.data);
const parsedData = JSON.parse(qrCode.data);
console.log(parsedData);
console.log(typeof parsedData);
console.log(parsedData.id);
const parsedData2 = JSON.parse(parsedData);
console.log(parsedData2.id);
navigation.navigate('Home');
}
این خروجی زیر را میدهد
"{\"type\":\"receive\",\"id\":\"abcd\"}"
{"type":"receive","id":"abcd"}
string
undefined
abcd
بنابراین اساساً، qrCode.data یک string است که انتظار میرود. parsedData شبیه یک شیء خروجی میدهد، اما typeof آن string است. دسترسی به ویژگیها روی parsedData undefined میدهد - که منطقی است اگر یک رشته باشد. وقتی آن را بار دوم به parsedData2 تبدیل میکنم، آن یک شیء است و میتوانم به ویژگیها روی آن دسترسی پیدا کنم.
سوالم این است، چرا دفعه اول آن را تجزیه نمیکند؟ چرا باید دو بار این کار را انجام دهم؟