JSON 文件解析问题
JSON file parsing issue
我有一个 json 文件,我正试图在 snowflake 数据库 中解析该文件。
我能够解析除规则之外的所有节点。
我无法正确解析规则节点。
节点下方
"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
是否有人可以分享您的专业知识。
您提供的 JSON 几乎没有问题:
devices
和 fingerPrint
标签之间缺少 ,
"devices":"1""fingerPrint":""
您的 rules
标签如下
"rules": {
"540828":"Store_App_Fingerprint",
"576196":"App_email_domain"
}
如您所见,密钥是 540828
& 576196
而不是 Store_App_Fingerprint
& App_email_domain
。
如果您想访问 rules.App_email_domain
,您需要像下面这样更改您的 JSON:
"rules": {
"Store_App_Fingerprint":"540828",
"App_email_domain":"576196"
}
由于您正在尝试 select 嵌套元素,因此您应该使用 .
符号导航到特定字段。
例如
当前: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 | .... |
+---------+------+--------------+----------+----------------------------------------------------------------+------------------+--------------+
我有一个 json 文件,我正试图在 snowflake 数据库 中解析该文件。 我能够解析除规则之外的所有节点。
我无法正确解析规则节点。 节点下方
"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
是否有人可以分享您的专业知识。
您提供的 JSON 几乎没有问题:
devices
和 fingerPrint
标签之间缺少 ,
"devices":"1""fingerPrint":""
您的 rules
标签如下
"rules": {
"540828":"Store_App_Fingerprint",
"576196":"App_email_domain"
}
如您所见,密钥是 540828
& 576196
而不是 Store_App_Fingerprint
& App_email_domain
。
如果您想访问 rules.App_email_domain
,您需要像下面这样更改您的 JSON:
"rules": {
"Store_App_Fingerprint":"540828",
"App_email_domain":"576196"
}
由于您正在尝试 select 嵌套元素,因此您应该使用 .
符号导航到特定字段。
例如
当前: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 | .... |
+---------+------+--------------+----------+----------------------------------------------------------------+------------------+--------------+