معرفی
در دنیای توسعه امروزی، ما در معرض عملیات پایگاه داده SQL و No-SQL هستیم. ممکن است در برخی مواقع لازم باشد داده های JSON را به جدول SQL نگاشت کنیم. در اینجا مقاله ای در مورد تجزیه JSON در SQL آمده است. بیا شروع کنیم.
فرض کنید front-end /client داده های JSON را در قالب رشته ارسال می کند. یک متغیر برای ذخیره رشته JSON به صورت زیر تعریف کنید.
//input from client
set @json = N'[{ "mid": "/m/01dvt1", "description": "Joint", "score": 0.975906968,
"topicality": 0.975906968 }, { "mid": "/m/0dzf4", "description": "Arm", "score": 0.9426941, "topicality": 0.9426941 },
{ "mid": "/m/01ssh5", "description": "Shoulder", "score": 0.936277151, "topicality": 0.936277151 },
{ "mid": "/m/035r7c", "description": "Leg", "score": 0.925112, "topicality": 0.925112 },
{ "mid": "/m/01d40f", "description": "Dress", "score": 0.920576453, "topicality": 0.920576453 },
{ "mid": "/m/02p0tk3", "description": "Human body", "score": 0.8836405, "topicality": 0.8836405 },
{ "mid": "/m/062581", "description": "Sleeve", "score": 0.8722252, "topicality": 0.8722252 },
{ "mid": "/m/019swr", "description": "Knee", "score": 0.8650081, "topicality": 0.8650081 },
{ "mid": "/m/01j04m", "description": "Thigh", "score": 0.858148634, "topicality": 0.858148634 },
{ "mid": "/m/01vm1p", "description": "Elbow", "score": 0.834722638, "topicality": 0.834722638 }]';
این دادههای JSON در قالب رشته است ( معادل JSON.stringify() در جاوا اسکریپت). قبل از شروع به نقشهبرداری دادهها، ابتدا باید یک شی JSON معتبر از ورودی رشته تولید کنیم . می توانیم "/" و "" را با فاصله جایگزین کنیم . این کد است.
set @json = REPLACE(@json,'/','');
SQL دارای روش داخلی "OPENJSON" برای تبدیل یک شی JSON به فرمت ردیف و ستون است. خروجی را ببینیم.
خروجی
در اینجا "نوع" به نوع داده داده های JSON اشاره دارد. برای اطلاعات بیشتر