JSON文件解析问题

时间:2018-10-24 09:22:56

标签: json snowflake-datawarehouse

我有一个json文件,我正在尝试在雪花数据库中进行解析。 我可以解析除规则之外的所有节点。

我无法正确解析规则节点。 在节点下

"rules":{"540828":"Store_App_Fingerprint","576196":"App_email_domain"}

如果我缺少什么,请提供帮助。

文件结构就是这样。

{"country":"","auto":"R","orderNumber":"contraact123","language":"","rules":{"540828":"Store_App_Fingerprint","576196":"App_email_domain"},"deviceLayers":"...."
,"mode":"Q","score":"29","merchantId":"124300","vmax":"0","warningCount":0,"brand":"NONE","errorCount":0,"knowYourCustomer":"N","kaptcha":"N","counters":{},
"pcRemote":"","devices":"1""fingerPrint":""}

我尝试过的代码。

select v.pkey as pkey,
parse_json(v.content):country::string as country ,
parse_json(v.content):auto::string as auto ,
parse_json(v.content):orderNumber::string as orderNumber 
,parse_json(v.content):language::string as language
,parse_json(v.content):rules::string as rules,
 parse_json(v.content):App_email_domain::string as App_email_domain ,
parse_json(v.content):deviceLayers::string as deviceLayers 

可能有人请分享您的专业知识。

1 个答案:

答案 0 :(得分:0)

您提供的JSON几乎没有问题:


,devices标签之间缺少fingerPrint

  

“设备”:“ 1”“指纹”:“”


您的rules标签就像下面的

  "rules": {
      "540828":"Store_App_Fingerprint",
      "576196":"App_email_domain"
  }

如您所见,密钥是540828576196,而不是Store_App_FingerprintApp_email_domain

如果您要访问rules.App_email_domain,则需要按以下方式更改JSON:

"rules": {
    "Store_App_Fingerprint":"540828",
    "App_email_domain":"576196"
}

由于要选择嵌套元素,因此应使用.表示法导航到特定字段。

例如

当前:parse_json(column1):App_email_domain::string as App_email_domain

已更新:parse_json(column1):rules.App_email_domain::string as App_email_domain

这是工作示例:

SELECT
    parse_json(column1):country::string as country
  , parse_json(column1):auto::string as auto
  , parse_json(column1):orderNumber::string as orderNumber 
  , parse_json(column1):language::string as language
  , parse_json(column1):rules::string as rules
  , parse_json(column1):rules.App_email_domain::string as App_email_domain
  , parse_json(column1):deviceLayers::string as deviceLayers
FROM VALUES
('{
    "country": "",
    "auto": "R",
    "orderNumber": "contraact123",
    "language": "",
    "rules": {
        "Store_App_Fingerprint": "540828",
        "App_email_domain": "576196"
    },
    "deviceLayers": "....",
    "mode": "Q",
    "score": "29",
    "merchantId": "124300",
    "vmax": "0",
    "warningCount": 0,
    "brand": "NONE",
    "errorCount": 0,
    "knowYourCustomer": "N",
    "kaptcha": "N",
    "counters": {},
    "pcRemote": "",
    "devices": "1",
    "fingerPrint": ""
}') v;

结果:

+---------+------+--------------+----------+----------------------------------------------------------------+------------------+--------------+
| COUNTRY | AUTO | ORDERNUMBER  | LANGUAGE | RULES                                                          | APP_EMAIL_DOMAIN | DEVICELAYERS |
+---------+------+--------------+----------+----------------------------------------------------------------+------------------+--------------+
|         | R    | contraact123 |          | {"App_email_domain":"576196","Store_App_Fingerprint":"540828"} | 576196           | ....         |
+---------+------+--------------+----------+----------------------------------------------------------------+------------------+--------------+
相关问题