解析字符串 SQL 服务器,Ruby,python?
parse string SQL Server , Ruby , python?
我正在尝试解析这一串数据...它是一个来自 API GET...
的字段
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}
看起来很眼熟。就像 ruby 中的 JSON 散列...
最好的解析方法是什么。我在 SQL 服务器 table 中有数据,所以 TSQL 更可取。但我也会考虑 Ruby 或 Python 如果它更好..
您可以尝试将存储的 API 数据转换并解析为 JSON。
示例数据:
SELECT *
INTO Data
FROM (VALUES
('{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}'),
('Invalid JSON data')
) v (ApiData)
声明:
SELECT t.ApiData, j.*
FROM (
SELECT
ApiData,
JsonData = CASE
WHEN ISJSON(REPLACE(ApiData, '=>', ':')) = 1 THEN REPLACE(ApiData, '=>', ':')
ELSE NULL
END
FROM Data
) t
OUTER APPLY OPENJSON(t.JsonData) j
结果:
ApiData
key
value
type
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}
displayValue
LNA1234
1
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}
isMulti
true
3
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}
textValue
PNA64582
1
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}
type
entity_link
1
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}
value
["srp_zfeedr88N"]
4
Invalid JSON data
我正在尝试解析这一串数据...它是一个来自 API GET...
的字段{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}
看起来很眼熟。就像 ruby 中的 JSON 散列...
最好的解析方法是什么。我在 SQL 服务器 table 中有数据,所以 TSQL 更可取。但我也会考虑 Ruby 或 Python 如果它更好..
您可以尝试将存储的 API 数据转换并解析为 JSON。
示例数据:
SELECT *
INTO Data
FROM (VALUES
('{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]}'),
('Invalid JSON data')
) v (ApiData)
声明:
SELECT t.ApiData, j.*
FROM (
SELECT
ApiData,
JsonData = CASE
WHEN ISJSON(REPLACE(ApiData, '=>', ':')) = 1 THEN REPLACE(ApiData, '=>', ':')
ELSE NULL
END
FROM Data
) t
OUTER APPLY OPENJSON(t.JsonData) j
结果:
ApiData | key | value | type |
---|---|---|---|
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]} | displayValue | LNA1234 | 1 |
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]} | isMulti | true | 3 |
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]} | textValue | PNA64582 | 1 |
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]} | type | entity_link | 1 |
{"displayValue"=>"LNA1234", "isMulti"=>true, "textValue"=>"PNA64582", "type"=>"entity_link", "value"=>["srp_zfeedr88N"]} | value | ["srp_zfeedr88N"] | 4 |
Invalid JSON data |