我有一个 JSON 列,其中包含价值约 300k 的属性,我想尝试以一种可以获得属性的完整路径和值的方式导出它。请注意,我的 JSON 没有数组 - 它基本上是用于 Web 应用程序翻译的 JSON。
为了提供一个带有以下 JSON 的简单示例,我想返回以下内容:
JSON:
{"Name":"Jeff", "Address": {"Street": "123 Harrow Street", "City": "Dublin"}}
预期输出:
|----------------|-------------------|
| path | value |
|----------------|-------------------|
| Name | Jeff |
| Address.Street | 123 Harrow Street |
| Address.City | Dublin |
|----------------|-------------------|
或者,如果它更容易我可以使用 ,$.
因为我希望能够轻松更新每个属性的值 - 使用JSON_MODIFY
.
我试过使用 OPENJSON,但它似乎只返回 3 个字段键、值和类型,但至少这里的键没有超出值的字段级别,所以我得到:查询:
DECLARE @json_doc nvarchar(4000) = '{"Name":"Jeff", "Address": {"Street": "123 Harrow Street", "City": "Dublin"}}';
SELECT [key], [value]
FROM OPENJSON(@json_doc);
GO
输出:
|---------|---------------------------------------------------|
| key | value |
|---------|---------------------------------------------------|
| Name | Jeff |
| Address | {"Street": "123 Harrow Street", "City": "Dublin"} |
|---------|---------------------------------------------------|
有没有办法让 OPENJSON 查询完全递归?还是有其他方法?我试过谷歌搜索,但这似乎不是一个常见的要求?