पढ़ा है मेरे पास कुछ जेसन है जो मैं SQL Server 2016 में पार्स करना चाहता हूं। परियोजनाओं की एक पदानुक्रम संरचना-> संरचनाएं-> गुण। मैं एक प्रश्न है कि पूरे पदानुक्रम को पार्स करता है लिखने के लिए चाहते हैं, लेकिन मैं यानी मैं इस तरह कुछ भी नहीं करना चाहती सूचकांक संख्या से किसी भी तत्व को निर्दिष्ट करने के लिए नहीं करना चाहती:SQL सर्वर OPENJSON नेस्टेड जेसन
openjson (@json, '$[0]')
या
openjson (@json, '$.structures[0]')
मुझे यह विचार था कि मैं जेएसएन स्ट्रिंग के साथ शीर्ष स्तरीय प्रोजेक्ट ऑब्जेक्ट्स के मानों को पढ़ सकता हूं जो इसके नीचे संरचनाओं का प्रतिनिधित्व करता है, जिसे अलग से पार्स किया जा सकता है। समस्या यह है कि निम्नलिखित कोड काम नहीं करता है:
declare @json nvarchar(max)
set @json = '
[
{
"IdProject":"97A76363-095D-4FAB-940E-9ED2722DBC47",
"Name":"Test Project",
"structures":[
{
"IdStructure":"CB0466F9-662F-412B-956A-7D164B5D358F",
"IdProject":"97A76363-095D-4FAB-940E-9ED2722DBC47",
"Name":"Test Structure",
"BaseStructure":"Base Structure",
"DatabaseSchema":"dbo",
"properties":[
{
"IdProperty":"618DC40B-4D04-4BF8-B1E6-12E13DDE86F4",
"IdStructure":"CB0466F9-662F-412B-956A-7D164B5D358F",
"Name":"Test Property 2",
"DataType":1,
"Precision":0,
"Scale":0,
"IsNullable":false,
"ObjectName":"Test Object",
"DefaultType":1,
"DefaultValue":""
},
{
"IdProperty":"FFF433EC-0BB5-41CD-8A71-B5F09B97C5FC",
"IdStructure":"CB0466F9-662F-412B-956A-7D164B5D358F",
"Name":"Test Property 1",
"DataType":1,
"Precision":0,
"Scale":0,
"IsNullable":false,
"ObjectName":"Test Object",
"DefaultType":1,
"DefaultValue":""
}
]
}
]
}
]';
select IdProject, Name, structures
from openjson (@json)
with
(
IdProject uniqueidentifier,
Name nvarchar(100),
structures nvarchar(max)
) as Projects
IdProject और नाम कोई समस्या नहीं लौटे हो लेकिन किसी कारण से मैं नेस्टेड json 'संरचनाओं' में आयोजित नहीं मिल सकता है। इसके बजाय json सामग्री की यह सिर्फ रिटर्न शून्य:
किसी को भी पता है कि अगर यह संभव है और यदि हां, तो क्या मैं गलत कर रहा हूँ?