खोज…


JSON पथ के लिए

JSON टेक्स्ट के रूप में SELECT क्वेरी के परिणाम। JSON PATH क्लॉज को क्वेरी के बाद जोड़ा जाता है:

SELECT top 3 object_id, name, type, principal_id FROM sys.objects
FOR JSON PATH

कॉलम नाम JSON में कुंजियों के रूप में उपयोग किए जाएंगे, और JSON मान के रूप में सेल मान उत्पन्न किए जाएंगे। क्वेरी का परिणाम JSON ऑब्जेक्ट्स का एक सरणी होगा:

[
  {"object_id":3,"name":"sysrscols","type":"S "},       
  {"object_id":5,"name":"sysrowsets","type":"S "},
  {"object_id":6,"name":"sysclones","type":"S "}
]

प्रिंसिपल_आईडी कॉलम में पूर्ण मानों को अनदेखा किया जाएगा (वे उत्पन्न नहीं होंगे)।

कॉलम एलियन के साथ JSON PATH के लिए

JSON PATH के लिए आप स्तंभ एलियास का उपयोग कर JSON के आउटपुट को नियंत्रित करने में सक्षम बनाता है:

SELECT top 3 object_id as id, name as [data.name], type as [data.type]
FROM sys.objects
FOR JSON PATH

कॉलम उपनाम अन्य कुंजी नाम के रूप में उपयोग किया जाएगा। डॉट-अलग किए गए स्तंभ उपनाम (data.name और data.type) नेस्टेड ऑब्जेक्ट के रूप में उत्पन्न होंगे। यदि दो स्तंभों में डॉट संकेतन में एक ही उपसर्ग होता है, तो उन्हें एकल ऑब्जेक्ट (इस उदाहरण में डेटा) में एक साथ समूहीकृत किया जाएगा:

[
  {"id":3,"data":{"name":"sysrscols","type":"S "}},
  {"id":5,"data":{"name":"sysrowsets","type":"S "}},
  {"id":6,"data":{"name":"sysclones","type":"S "}}
]

सरणी आवरण के बिना JSON क्लॉज के लिए (आउटपुट में एकल ऑब्जेक्ट)

बिना with_ARRAY_WRAPPER विकल्प आपको सरणी के बजाय एकल ऑब्जेक्ट उत्पन्न करने में सक्षम बनाता है। इस विकल्प का उपयोग करें यदि आप जानते हैं कि आप एकल पंक्ति / वस्तु वापस करेंगे:

SELECT top 3 object_id, name, type, principal_id
FROM sys.objects
WHERE object_id = 3
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

इस मामले में एकल वस्तु लौटा दी जाएगी:

{"object_id":3,"name":"sysrscols","type":"S "}

INCLUDE_NULL_VALUES

JSON क्लॉज के लिए कक्षों में NULL मान पर ध्यान नहीं देता है। यदि आप "कुंजी" उत्पन्न करना चाहते हैं: उन सेल के लिए अशक्त जोड़े जिनमें पूर्ण मान हैं, क्वेरी में INCLUDE_NULL_VALUES विकल्प जोड़ें:

SELECT top 3 object_id, name, type, principal_id
FROM sys.objects
FOR JSON PATH, INCLUDE_NULL_VALUES

प्रिंसिपल_आईडी कॉलम में पूर्ण मान उत्पन्न होंगे:

[
  {"object_id":3,"name":"sysrscols","type":"S ","principal_id":null},
  {"object_id":5,"name":"sysrowsets","type":"S ","principal_id":null},
  {"object_id":6,"name":"sysclones","type":"S ","principal_id":null}
]

जड़ वस्तु के साथ लपेटकर परिणाम

अतिरिक्त कुंजी ऑब्जेक्ट के साथ निर्दिष्ट कुंजी के साथ रैप्स ने JSON सरणी लौटा दी:

SELECT top 3 object_id, name, type FROM sys.objects
FOR JSON PATH, ROOT('data')

क्वेरी का परिणाम आवरण ऑब्जेक्ट के अंदर JSON ऑब्जेक्ट्स का सरणी होगा:

{
  "data":[
           {"object_id":3,"name":"sysrscols","type":"S "},
           {"object_id":5,"name":"sysrowsets","type":"S "},
           {"object_id":6,"name":"sysclones","type":"S "}
         ]
}

JSON AUTO के लिए

JSON ऑब्जेक्ट्स के नेस्टेड सब-सरणी के रूप में दूसरी तालिका से स्वचालित रूप से घोंसले का मूल्य:

SELECT top 5 o.object_id, o.name, c.column_id, c.name
FROM sys.objects o
    JOIN sys.columns c ON o.object_id = c.object_id 
FOR JSON AUTO

क्वेरी का परिणाम JSON ऑब्जेक्ट्स का सरणी होगा:

[
  {
   "object_id":3,
   "name":"sysrscols",
   "c":[
        {"column_id":12,"name":"bitpos"},
        {"column_id":6,"name":"cid"}
       ]
  },
  {
    "object_id":5,
    "name":"sysrowsets",
    "c":[
         {"column_id":13,"name":"colguid"},
         {"column_id":3,"name":"hbcolid"},
         {"column_id":8,"name":"maxinrowlen"}
     ]
  }
]

कस्टम नेस्टेड JSON संरचना बनाना

अगर आपको JSON PATH या JSON AUTO के लिए कुछ जटिल JSON संरचना की आवश्यकता नहीं है, तो आप स्तंभ अभिव्यक्ति के रूप में JSON उप-प्रश्नों को लगाकर अपने JSON आउटपुट को अनुकूलित कर सकते हैं:

SELECT top 5 o.object_id, o.name,
        (SELECT column_id, c.name
            FROM sys.columns c WHERE o.object_id = c.object_id
            FOR JSON PATH) as columns,
        (SELECT parameter_id, name
            FROM sys.parameters p WHERE o.object_id = p.object_id
            FOR JSON PATH) as parameters
FROM sys.objects o
FOR JSON PATH

प्रत्येक उप-क्वेरी JSON परिणाम का उत्पादन करेगी जो मुख्य JSON सामग्री में शामिल होगी।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow