解析字符串 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