从 JSON 获取键名
Get key names from the JSON
如何从以下 JSON 中获取键名列表? (A1, A2)
DECLARE @json NVARCHAR(MAX);
SET @json = '{
"Model": [{
"A1": {
"read": [
"jcc",
"rdbro"
],
"write": [
"jcc"
]
},
"A2": {
"read": [
"jcc",
"rdbro",
"rdbrw"
],
"write": [
"foo"
]
}
}]
}'
SELECT *
FROM OPENJSON(@json, '$.Model') AS oj
下一条语句应该会为您提供密钥名称。 Model
是一个 JSON
数组,因此您需要一个额外的 APPLY
运算符和 OPENJSON()
使用默认模式调用,其中 returns table 带有列 key
、value
和 type
:
Json数据:
DECLARE @json NVARCHAR(MAX);
SET @json = '{
"Model": [{
"A1": {
"read": [
"jcc",
"rdbro"
],
"write": [
"jcc"
]
},
"A2": {
"read": [
"jcc",
"rdbro",
"rdbrw"
],
"write": [
"foo"
]
}
}]
}'
声明:
SELECT j2.[key]
FROM OPENJSON(@json, '$.Model') j1
CROSS APPLY OPENJSON(j1.[value]) j2
输出:
----
key
----
A1
A2
如何从以下 JSON 中获取键名列表? (A1, A2)
DECLARE @json NVARCHAR(MAX);
SET @json = '{
"Model": [{
"A1": {
"read": [
"jcc",
"rdbro"
],
"write": [
"jcc"
]
},
"A2": {
"read": [
"jcc",
"rdbro",
"rdbrw"
],
"write": [
"foo"
]
}
}]
}'
SELECT *
FROM OPENJSON(@json, '$.Model') AS oj
下一条语句应该会为您提供密钥名称。 Model
是一个 JSON
数组,因此您需要一个额外的 APPLY
运算符和 OPENJSON()
使用默认模式调用,其中 returns table 带有列 key
、value
和 type
:
Json数据:
DECLARE @json NVARCHAR(MAX);
SET @json = '{
"Model": [{
"A1": {
"read": [
"jcc",
"rdbro"
],
"write": [
"jcc"
]
},
"A2": {
"read": [
"jcc",
"rdbro",
"rdbrw"
],
"write": [
"foo"
]
}
}]
}'
声明:
SELECT j2.[key]
FROM OPENJSON(@json, '$.Model') j1
CROSS APPLY OPENJSON(j1.[value]) j2
输出:
----
key
----
A1
A2