2016-12-15 3 views
1

Ich möchte eine XML-Spalte in eine JSON-Zeichenfolge konvertieren. Bisher habe ich einige Optionen für SO und Google ausprobiert, aber alle konvertieren eine Tabelle in eine JSON-Zeichenfolge. Gibt es eine Möglichkeit, dies zu tun, ohne zuerst die XML in eine Tabelle zu konvertieren?SQL Server XML in JSON konvertieren

Version: SQL Server 2014 (SP2)

declare @xml xml 
select @xml = xml_column from mytable 
select some_potential_function(@xml) as JSON_String 

PS: Meine xml wächst dynamisch als ich einen Baum speichern mit unterschiedlicher Anzahl von Ebenen in ihm. Aus diesem Grund ist die Konvertierung in eine Tabelle möglicherweise keine Option.

+0

Überprüfen dieser Artikel, ziemlich illustriert hier mit anständiger Anzahl von Beispielen - https://www.simple-talk.com/sql/t-sql-programming/producing-json-documents-from-sql-server-queries-via-tsql/ – Abhishek

+0

Ich bin tatsächlich versuchen, etwas genau zu erreichen, was diese Seite anbietet: http://www.utilities-online.info/xmltojson/#.WFI4wvl96Uk –

Antwort

1

Sie könnten ".nodes()" versuchen Methode auf XML-Typ dieser (https://msdn.microsoft.com/en-us/library/ms188282.aspx) zusammen mit FOR JSON AUTO in SQL Server 2016 und höher zu tun (https://msdn.microsoft.com/en-us/library/dn921882.aspx):

DECLARE @xml XML = '<?xml version="1.0"?> 
    <catalog> 
     <book id="bk101"> 
      <author>Gambardella, Matthew</author> 
     </book> 
     <book id="bk102"> 
      <author>Ralls, Kim</author> 
     </book> 
    </catalog>'''; 
SELECT b.value('@id', 'nvarchar(MAX)') AS book 
    ,b.value('author[1]', 'nvarchar(MAX)') AS author 
    -- the rest of your columns 
FROM @xml.nodes('/catalog/book') AS a(b) 
FOR JSON AUTO 
+0

Danke für Ihre Antwort. Wie ich in der Frage angedeutet habe, ist meine SQL Server Version 2014. Das wird also keine Option für mich sein. –