Heim >Datenbank >MySQL-Tutorial >Wie konvertiere ich ein SQL Server-Objektarray in ein Wertearray in JSON?
SQL Server 2016 JSON-Konvertierung: Objektarrays in Wertearrays umwandeln
Die JSON-Funktionen von SQL Server 2016 sind leistungsstark, aber die Konvertierung von Objektarrays in Wertearrays erfordert einen bestimmten Ansatz. Lassen Sie uns die Herausforderung und Lösung veranschaulichen.
Stellen Sie sich dieses Szenario vor:
<code class="language-sql">CREATE TABLE #temp (item_id VARCHAR(256)) INSERT INTO #temp VALUES ('1234'),('5678'),('7890') SELECT * FROM #temp -- Initial JSON conversion attempt SELECT (SELECT item_id FROM #temp FOR JSON PATH,root('ids')) </code>
Dies ergibt ein JSON-Array von Objekten:
<code class="language-json">{ "ids": [{ "item_id": "1234" }, { "item_id": "5678" }, { "item_id": "7890" }] }</code>
Das Ziel ist jedoch ein JSON-Array von Werten:
<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
Der Schlüssel liegt darin, XML als Zwischenschritt zu nutzen:
<code class="language-sql">SELECT JSON_QUERY('[' + STUFF(( SELECT ',' + '"' + item_id + '"' FROM #temp FOR XML PATH('')),1,1,'') + ']' ) ids FOR JSON PATH , WITHOUT_ARRAY_WRAPPER </code>
Diese Abfrage erstellt zunächst eine XML-Zeichenfolge, die die Werte darstellt, entfernt dann mit STUFF
das führende Komma und schließt das Ergebnis schließlich in eckige Klammern ein, um ein JSON-Array zu bilden. Die FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
-Klausel stellt sicher, dass die Ausgabe ein einzelnes JSON-Array von Werten ist und kein Array, das ein einzelnes Objekt enthält. Dadurch wird effizient die gewünschte JSON-Struktur erreicht.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein SQL Server-Objektarray in ein Wertearray in JSON?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!