SQL到JSON转换:在SQL 2016中将对象数组转换为值数组
SQL 2016 提供了将SQL Server数据转换为JSON的功能,扩展了诸多可能性。然而,在处理对象数组时,有时所需的JSON结构可能与默认转换结果不同。
具体来说,将对象数组转换为JSON时,默认行为是将对象作为其自身数组嵌入父数组中。例如:
<code class="language-sql">SELECT (SELECT item_id FROM #temp FOR JSON PATH,root('ids'))</code>
结果:
<code class="language-json">{ "ids": [{ "item_id": "1234" }, { "item_id": "5678" }, { "item_id": "7890" }] }</code>
在某些情况下,可能更希望将对象数组显示为值数组,无需嵌套结构。
为了实现这一点,可以使用中间XML转换:
<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>
此步骤将数据转换为扁平化的XML结构,然后可以使用JSON_QUERY()
和WITHOUT_ARRAY_WRAPPER
参数将其转换为JSON。结果是所需的包含值的数组:
<code class="language-json">"ids": [ "1234", "5678", "7890" ]</code>
以上是如何在 SQL 2016 中将 SQL Server 对象数组转换为 JSON 值数组?的详细内容。更多信息请关注PHP中文网其他相关文章!