تایپاسکریپت - باید دوبار 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 تبدیل میکنم، آن یک شیء است و میتوانم به ویژگیها روی آن دسترسی پیدا کنم.

سوالم این است، چرا دفعه اول آن را تجزیه نمیکند؟ چرا باید دو بار این کار را انجام دهم؟