SQL解析JSON讲解
写这期之前,语兴及其他同学在开发使用时遇到很多不同JSON相关例子,期望通过这一期讲解能快速提升大家JSON解析效率
在解析JSON之前建议大家把JSON放到JSON解析相关站点或工具
1.正常JSON解析
样例数据
这里以一个社区动态数据为例子
{
"tag": "语兴好物好鞋分享",
"spuList": "Asics JOG 100 2 轻便透气入门级专业跑步鞋 黑武士 男女同款 ",
"circle": "",
"contentType": "动态图文",
"source": "APP发布",
"ocrResult": "[]",
"videoResult": "{}"
}
解析sql方法1(get_json_object函数)
select get_JSON_object(column_JSON,'$.tag') as tag
,get_JSON_object(column_JSON,'$.spuList') as spu_list--这里记得把解析好的字段名改一下
,get_JSON_object(column_JSON,'$.circle') as circle
,get_JSON_object(column_JSON,'$.contentType') as content_type
,column_JSON
from
(
select '{"tag":"语兴好物好鞋分享","spuList":"Asics JOG 100 2 轻便透气入门级专业跑步鞋 黑武士 男女同款 ","circle":"","contentType":"动态图文","source":"APP发布","ocrResult":"[]","videoResult":"{}"}' as column_JSON
)

解析sql方法2(json_tuple函数),对比get_json_object可以获取多个字段
select tag
,spu_list
,content_type
from
(
select '{"tag":"语兴好物好鞋分享","spuList":"Asics JOG 100 2 轻便透气入门级专业跑步鞋 黑武士 男女同款 ","circle":"","contentType":"动态图文","source":"APP发布","ocrResult":"[]","videoResult":"{}"}' as column_JSON
)
LATERAL VIEW JSON_tuple(column_JSON, 'tag', 'spuList', 'contentType') b AS tag, spu_list, content_type;
--这里记得把解析好的字段名改一下

2.List套JSON解析
样例数据
这里以一个算法数据为例子,获取第一个小List 0:中的0:JSON field所对应的 spu_id
[
[
{
"dictCode": "",
"field": "spuId",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": 11924075,
"sourceCode": "repeat_image_check"
},
{
"dictCode": "repeat_image_similar_level#repeat_image_similar_level",
"field": "similarResult",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "enum",
"fieldVal": "high",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "spuTitle",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "Tommy Hilfiger 格子徽标尖领纽扣长袖衬衫 男款 蓝色",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "articleNumber",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "MW0MW33780-0MS",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "commodityOnlineStatus#commodityOnlineStatus",
"field": "status",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "enum",
"fieldVal": 1,
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "spuImage",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "image",
"fieldVal": "https://cdn.xx.com/pro-img/origin-img/20240522/e8b2386c27e44656a6e5fc46019c77e5.jpg",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "type",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "image",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "distance",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": 0.997498813867569,
"sourceCode": "repeat_image_check"
}
],
[
{
"dictCode": "",
"field": "spuId",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": 11924075,
"sourceCode": "repeat_image_check"
},
{
"dictCode": "repeat_image_similar_level#repeat_image_similar_level",
"field": "similarResult",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "enum",
"fieldVal": "high",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "spuTitle",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "Tommy Hilfiger 格子徽标尖领纽扣长袖衬衫 男款 蓝色",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "articleNumber",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "MW0MW33780-0MS",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "commodityOnlineStatus#commodityOnlineStatus",
"field": "status",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "enum",
"fieldVal": 1,
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "spuImage",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "image",
"fieldVal": "https://cdn.xx.com/pro-img/origin-img/20240522/e8b2386c27e44656a6e5fc46019c77e5.jpg",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "type",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "image",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "distance",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": 0.997498813867569,
"sourceCode": "repeat_image_check"
}
],
[
{
"dictCode": "",
"field": "spuId",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": 1332866,
"sourceCode": "repeat_image_check"
},
{
"dictCode": "repeat_image_similar_level#repeat_image_similar_level",
"field": "similarResult",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "enum",
"fieldVal": "high",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "spuTitle",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "MARKM NOUVELLE GENERATION 格纹撞色长袖衬衫 男女同款",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "articleNumber",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "MBBAI50020",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "commodityOnlineStatus#commodityOnlineStatus",
"field": "status",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "enum",
"fieldVal": 0,
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "spuImage",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "image",
"fieldVal": "https://cdn.xx.com/pro-img/origin-img/20220520/46984a1785d94c5ab389a0af6f8e431f.jpg",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "type",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": "image",
"sourceCode": "repeat_image_check"
},
{
"dictCode": "",
"field": "distance",
"fieldCategory": "out",
"fieldSource": "comp",
"fieldType": "text",
"fieldVal": 0.9969316732883453,
"sourceCode": "repeat_image_check"
}
]
]
你会发现这个是一个大List套小List套JSON

解析sql方法
SELECT
get_JSON_object(colun_JSON, '$[0][0].fieldVal') as spu_id,
get_JSON_object(colun_JSON, '$[0][1].fieldVal') as similar_result,
get_JSON_object(colun_JSON, '$[0][2].fieldVal') as spu_title,
get_JSON_object(colun_JSON, '$[0][3].fieldVal') as article_number,
get_JSON_object(colun_JSON, '$[0][4].fieldVal') as status,
get_JSON_object(colun_JSON, '$[0][5].fieldVal') as spu_image,
get_JSON_object(colun_JSON, '$[0][7].fieldVal') as distance,
get_JSON_object(colun_JSON, '$[0][8].fieldVal') as original_spu_id,
get_JSON_object(colun_JSON, '$[0][9].fieldVal') as original_spu_title,
get_JSON_object(colun_JSON, '$[0][10].fieldVal') as original_article_number
from
(
select '[[{"dictCode":"","field":"spuId","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":11924075,"sourceCode":"repeat_image_check"},{"dictCode":"repeat_image_similar_level#repeat_image_similar_level","field":"similarResult","fieldCategory":"out","fieldSource":"comp","fieldType":"enum","fieldVal":"high","sourceCode":"repeat_image_check"},{"dictCode":"","field":"spuTitle","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"Tommy Hilfiger 格子徽标尖领纽扣长袖衬衫 男款 蓝色","sourceCode":"repeat_image_check"},{"dictCode":"","field":"articleNumber","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"MW0MW33780-0MS","sourceCode":"repeat_image_check"},{"dictCode":"commodityOnlineStatus#commodityOnlineStatus","field":"status","fieldCategory":"out","fieldSource":"comp","fieldType":"enum","fieldVal":1,"sourceCode":"repeat_image_check"},{"dictCode":"","field":"spuImage","fieldCategory":"out","fieldSource":"comp","fieldType":"image","fieldVal":"https://cdn.xxxxx.com/pro-img/origin-img/20240522/e8b2386c27e44656a6e5fc46019c77e5.jpg","sourceCode":"repeat_image_check"},{"dictCode":"","field":"type","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"image","sourceCode":"repeat_image_check"},{"dictCode":"","field":"distance","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":0.997498813867569,"sourceCode":"repeat_image_check"}],[{"dictCode":"","field":"spuId","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":11924075,"sourceCode":"repeat_image_check"},{"dictCode":"repeat_image_similar_level#repeat_image_similar_level","field":"similarResult","fieldCategory":"out","fieldSource":"comp","fieldType":"enum","fieldVal":"high","sourceCode":"repeat_image_check"},{"dictCode":"","field":"spuTitle","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"Tommy Hilfiger 格子徽标尖领纽扣长袖衬衫 男款 蓝色","sourceCode":"repeat_image_check"},{"dictCode":"","field":"articleNumber","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"MW0MW33780-0MS","sourceCode":"repeat_image_check"},{"dictCode":"commodityOnlineStatus#commodityOnlineStatus","field":"status","fieldCategory":"out","fieldSource":"comp","fieldType":"enum","fieldVal":1,"sourceCode":"repeat_image_check"},{"dictCode":"","field":"spuImage","fieldCategory":"out","fieldSource":"comp","fieldType":"image","fieldVal":"https://cdn.xxxxx.com/pro-img/origin-img/20240522/e8b2386c27e44656a6e5fc46019c77e5.jpg","sourceCode":"repeat_image_check"},{"dictCode":"","field":"type","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"image","sourceCode":"repeat_image_check"},{"dictCode":"","field":"distance","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":0.997498813867569,"sourceCode":"repeat_image_check"}],[{"dictCode":"","field":"spuId","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":1332866,"sourceCode":"repeat_image_check"},{"dictCode":"repeat_image_similar_level#repeat_image_similar_level","field":"similarResult","fieldCategory":"out","fieldSource":"comp","fieldType":"enum","fieldVal":"high","sourceCode":"repeat_image_check"},{"dictCode":"","field":"spuTitle","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"MARKM NOUVELLE GENERATION 格纹撞色长袖衬衫 男女同款","sourceCode":"repeat_image_check"},{"dictCode":"","field":"articleNumber","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"MBBAI50020","sourceCode":"repeat_image_check"},{"dictCode":"commodityOnlineStatus#commodityOnlineStatus","field":"status","fieldCategory":"out","fieldSource":"comp","fieldType":"enum","fieldVal":0,"sourceCode":"repeat_image_check"},{"dictCode":"","field":"spuImage","fieldCategory":"out","fieldSource":"comp","fieldType":"image","fieldVal":"https://cdn.xxxxx.com/pro-img/origin-img/20220520/46984a1785d94c5ab389a0af6f8e431f.jpg","sourceCode":"repeat_image_check"},{"dictCode":"","field":"type","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":"image","sourceCode":"repeat_image_check"},{"dictCode":"","field":"distance","fieldCategory":"out","fieldSource":"comp","fieldType":"text","fieldVal":0.9969316732883453,"sourceCode":"repeat_image_check"}]]' as colun_JSON
)

3.JSON套JSON解析
样例数据
这里以一个语兴好物商品数据为例子,获取第一个data下brandName及color数据
{
"collectId": "farfetchcn_4bc68f664f1a03d79366a7c667993627_20240305191718",
"collectTime": "20240305191718",
"data": {
"attributes": "",
"brandName": "WARDROBE.NYC",
"category": "女士首页/WARDROBE.NYC/服装/西装夹克",
"color": "中性色",
"country": "",
"currency": "CNY",
"dataSource": "farfetch-cn",
"discountedPrice": "16447.0",
"itemNumber": "W4043R12",
"material": "表面: 羊毛,衬里: 粘胶纤维",
"productName": "WARDROBE.NYC Contour 双排扣西装夹克",
"productRetailPrice": "16447.0",
"productUrl": "https://www.farfetch.cn/cn/shopping/women/wardrobenyc-contour-item-19404158.aspx",
"region": "美国",
"releaseDate": "",
"size": [
[
{
"sizeList": [
"XXXS",
"XXS",
"XS",
"S",
"M",
"L",
"XL",
"XXL",
"XXXL",
"4XL",
"5XL",
"6XL",
"7XL"
],
"sizeStandardName": "服装标准尺码"
},
{
"sizeList": [
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60"
],
"sizeStandardName": "意大利"
},
{
"sizeList": [
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56"
],
"sizeStandardName": "法国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "英国尺码"
},
{
"sizeList": [
"0",
"2",
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24"
],
"sizeStandardName": "美国尺码"
},
{
"sizeList": [
"30",
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54"
],
"sizeStandardName": "德国/丹麦"
},
{
"sizeList": [
"XPP",
"PP",
"P",
"M",
"M",
"G",
"G",
"GG",
"GG",
"XGG",
"XGG",
"XGG",
"XGG"
],
"sizeStandardName": "巴西尺码 P-M-G"
},
{
"sizeList": [
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58"
],
"sizeStandardName": "巴西"
},
{
"sizeList": [
"3",
"5",
"7",
"9",
"11",
"13",
"15",
"17",
"19",
"21",
"23",
"25",
"27"
],
"sizeStandardName": "日本尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
],
"sizeStandardName": "标准尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"I",
"II",
"III",
"IV",
"V",
"VI",
"VII",
"VIII",
"IX",
"X"
],
"sizeStandardName": "罗马数字"
},
{
"sizeList": [
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60",
"62"
],
"sizeStandardName": "俄罗斯尺码"
},
{
"sizeList": [
null,
"33",
"44",
"55",
"66",
"77",
"88",
"99",
null,
null,
null,
null,
null
],
"sizeStandardName": "韩国"
},
{
"sizeList": [
"145/73A",
"150/76A",
"155/80A",
"160/84A",
"165/88A",
"170/92A",
"175/96A",
"180/100A",
"185/104A",
null,
null,
null,
null
],
"sizeStandardName": "中国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "澳大利亚尺码"
}
]
],
"skuId": "",
"spuId": "19421312312",
"style": "",
"targetPopulation": ""
}
}
解析sql方法
SELECT COALESCE(GET_JSON_OBJECT(column_JSON,'$.data.brandName'),'') as brand_name
,COALESCE(GET_JSON_OBJECT(column_JSON,'$.data.color'),'') as color
FROM
(
select '{
"collectId": "farfetchcn_4bc68f664f1a03d79366a7c667993627_20240305191718",
"collectTime": "20240305191718",
"data": {
"attributes": "",
"brandName": "WARDROBE.NYC",
"category": "女士首页/WARDROBE.NYC/服装/西装夹克",
"color": "中性色",
"country": "",
"currency": "CNY",
"dataSource": "farfetch-cn",
"discountedPrice": "16447.0",
"itemNumber": "W4043R12",
"material": "表面: 羊毛,衬里: 粘胶纤维",
"productName": "WARDROBE.NYC Contour 双排扣西装夹克",
"productRetailPrice": "16447.0",
"productUrl": "https://www.farfetch.cn/cn/shopping/women/wardrobenyc-contour-item-19404158.aspx",
"region": "美国",
"releaseDate": "",
"size": [
[
{
"sizeList": [
"XXXS",
"XXS",
"XS",
"S",
"M",
"L",
"XL",
"XXL",
"XXXL",
"4XL",
"5XL",
"6XL",
"7XL"
],
"sizeStandardName": "服装标准尺码"
},
{
"sizeList": [
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60"
],
"sizeStandardName": "意大利"
},
{
"sizeList": [
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56"
],
"sizeStandardName": "法国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "英国尺码"
},
{
"sizeList": [
"0",
"2",
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24"
],
"sizeStandardName": "美国尺码"
},
{
"sizeList": [
"30",
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54"
],
"sizeStandardName": "德国/丹麦"
},
{
"sizeList": [
"XPP",
"PP",
"P",
"M",
"M",
"G",
"G",
"GG",
"GG",
"XGG",
"XGG",
"XGG",
"XGG"
],
"sizeStandardName": "巴西尺码 P-M-G"
},
{
"sizeList": [
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58"
],
"sizeStandardName": "巴西"
},
{
"sizeList": [
"3",
"5",
"7",
"9",
"11",
"13",
"15",
"17",
"19",
"21",
"23",
"25",
"27"
],
"sizeStandardName": "日本尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
],
"sizeStandardName": "标准尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"I",
"II",
"III",
"IV",
"V",
"VI",
"VII",
"VIII",
"IX",
"X"
],
"sizeStandardName": "罗马数字"
},
{
"sizeList": [
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60",
"62"
],
"sizeStandardName": "俄罗斯尺码"
},
{
"sizeList": [
null,
"33",
"44",
"55",
"66",
"77",
"88",
"99",
null,
null,
null,
null,
null
],
"sizeStandardName": "韩国"
},
{
"sizeList": [
"145/73A",
"150/76A",
"155/80A",
"160/84A",
"165/88A",
"170/92A",
"175/96A",
"180/100A",
"185/104A",
null,
null,
null,
null
],
"sizeStandardName": "中国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "澳大利亚尺码"
}
]
],
"skuId": "",
"spuId": "19421312312",
"style": "",
"targetPopulation": ""
}
}'
as column_JSON
)

4.JSON套JSON且对字符串切割解析
样例数据
这里和3的数据一致,只不过对JSON套JSON解析后进行再次处理,这里将类别切割为3列,直接split即可

{
"collectId": "farfetchcn_4bc68f664f1a03d79366a7c667993627_20240305191718",
"collectTime": "20240305191718",
"data": {
"attributes": "",
"brandName": "WARDROBE.NYC",
"category": "女士首页/WARDROBE.NYC/服装/西装夹克",
"color": "中性色",
"country": "",
"currency": "CNY",
"dataSource": "farfetch-cn",
"discountedPrice": "16447.0",
"itemNumber": "W4043R12",
"material": "表面: 羊毛,衬里: 粘胶纤维",
"productName": "WARDROBE.NYC Contour 双排扣西装夹克",
"productRetailPrice": "16447.0",
"productUrl": "https://www.farfetch.cn/cn/shopping/women/wardrobenyc-contour-item-19404158.aspx",
"region": "美国",
"releaseDate": "",
"size": [
[
{
"sizeList": [
"XXXS",
"XXS",
"XS",
"S",
"M",
"L",
"XL",
"XXL",
"XXXL",
"4XL",
"5XL",
"6XL",
"7XL"
],
"sizeStandardName": "服装标准尺码"
},
{
"sizeList": [
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60"
],
"sizeStandardName": "意大利"
},
{
"sizeList": [
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56"
],
"sizeStandardName": "法国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "英国尺码"
},
{
"sizeList": [
"0",
"2",
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24"
],
"sizeStandardName": "美国尺码"
},
{
"sizeList": [
"30",
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54"
],
"sizeStandardName": "德国/丹麦"
},
{
"sizeList": [
"XPP",
"PP",
"P",
"M",
"M",
"G",
"G",
"GG",
"GG",
"XGG",
"XGG",
"XGG",
"XGG"
],
"sizeStandardName": "巴西尺码 P-M-G"
},
{
"sizeList": [
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58"
],
"sizeStandardName": "巴西"
},
{
"sizeList": [
"3",
"5",
"7",
"9",
"11",
"13",
"15",
"17",
"19",
"21",
"23",
"25",
"27"
],
"sizeStandardName": "日本尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
],
"sizeStandardName": "标准尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"I",
"II",
"III",
"IV",
"V",
"VI",
"VII",
"VIII",
"IX",
"X"
],
"sizeStandardName": "罗马数字"
},
{
"sizeList": [
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60",
"62"
],
"sizeStandardName": "俄罗斯尺码"
},
{
"sizeList": [
null,
"33",
"44",
"55",
"66",
"77",
"88",
"99",
null,
null,
null,
null,
null
],
"sizeStandardName": "韩国"
},
{
"sizeList": [
"145/73A",
"150/76A",
"155/80A",
"160/84A",
"165/88A",
"170/92A",
"175/96A",
"180/100A",
"185/104A",
null,
null,
null,
null
],
"sizeStandardName": "中国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "澳大利亚尺码"
}
]
],
"skuId": "",
"spuId": "19421312312",
"style": "",
"targetPopulation": ""
}
}
解析sql方法
SELECT
COALESCE(split(GET_JSON_OBJECT(column_JSON,'$.data.category'), '/')[0] ,'') as product_category_level1-- 商品一级类目
,COALESCE(split(GET_JSON_OBJECT(column_JSON,'$.data.category'), '/')[1] ,'') as product_category_level2-- 商品二级类目
,COALESCE(split(GET_JSON_OBJECT(column_JSON,'$.data.category'), '/')[2] ,'') as product_category_level3-- 商品三级类目
FROM
(
select '{
"collectId": "farfetchcn_4bc68f664f1a03d79366a7c667993627_20240305191718",
"collectTime": "20240305191718",
"data": {
"attributes": "",
"brandName": "WARDROBE.NYC",
"category": "女士首页/WARDROBE.NYC/服装/西装夹克",
"color": "中性色",
"country": "",
"currency": "CNY",
"dataSource": "farfetch-cn",
"discountedPrice": "16447.0",
"itemNumber": "W4043R12",
"material": "表面: 羊毛,衬里: 粘胶纤维",
"productName": "WARDROBE.NYC Contour 双排扣西装夹克",
"productRetailPrice": "16447.0",
"productUrl": "https://www.farfetch.cn/cn/shopping/women/wardrobenyc-contour-item-19404158.aspx",
"region": "美国",
"releaseDate": "",
"size": [
[
{
"sizeList": [
"XXXS",
"XXS",
"XS",
"S",
"M",
"L",
"XL",
"XXL",
"XXXL",
"4XL",
"5XL",
"6XL",
"7XL"
],
"sizeStandardName": "服装标准尺码"
},
{
"sizeList": [
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60"
],
"sizeStandardName": "意大利"
},
{
"sizeList": [
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56"
],
"sizeStandardName": "法国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "英国尺码"
},
{
"sizeList": [
"0",
"2",
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24"
],
"sizeStandardName": "美国尺码"
},
{
"sizeList": [
"30",
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54"
],
"sizeStandardName": "德国/丹麦"
},
{
"sizeList": [
"XPP",
"PP",
"P",
"M",
"M",
"G",
"G",
"GG",
"GG",
"XGG",
"XGG",
"XGG",
"XGG"
],
"sizeStandardName": "巴西尺码 P-M-G"
},
{
"sizeList": [
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58"
],
"sizeStandardName": "巴西"
},
{
"sizeList": [
"3",
"5",
"7",
"9",
"11",
"13",
"15",
"17",
"19",
"21",
"23",
"25",
"27"
],
"sizeStandardName": "日本尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
],
"sizeStandardName": "标准尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"I",
"II",
"III",
"IV",
"V",
"VI",
"VII",
"VIII",
"IX",
"X"
],
"sizeStandardName": "罗马数字"
},
{
"sizeList": [
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60",
"62"
],
"sizeStandardName": "俄罗斯尺码"
},
{
"sizeList": [
null,
"33",
"44",
"55",
"66",
"77",
"88",
"99",
null,
null,
null,
null,
null
],
"sizeStandardName": "韩国"
},
{
"sizeList": [
"145/73A",
"150/76A",
"155/80A",
"160/84A",
"165/88A",
"170/92A",
"175/96A",
"180/100A",
"185/104A",
null,
null,
null,
null
],
"sizeStandardName": "中国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "澳大利亚尺码"
}
]
],
"skuId": "",
"spuId": "19421312312",
"style": "",
"targetPopulation": ""
}
}'
as column_JSON
)

5.JSON套List
样例数据
这次我们取JSON中List语兴好物尺码数据,其实和第2点做法有异曲同工之妙

{
"collectId": "farfetchcn_4bc68f664f1a03d79366a7c667993627_20240305191718",
"collectTime": "20240305191718",
"data": {
"attributes": "",
"brandName": "WARDROBE.NYC",
"category": "女士首页/WARDROBE.NYC/服装/西装夹克",
"color": "中性色",
"country": "",
"currency": "CNY",
"dataSource": "farfetch-cn",
"discountedPrice": "16447.0",
"itemNumber": "W4043R12",
"material": "表面: 羊毛,衬里: 粘胶纤维",
"newProductImgLinks": [
"https://yuxingShoping517d4465ee74b5ca8d3805592b1c71fd",
"https://yuxingShoping1f8c975d69dfc306677002f4478c3bfb",
"https://yuxingShopingad3be11e6ec6a2edc3d9229951c522eb",
"https://yuxingShoping5bef91b8aa001506eb3400464db51e8f",
"https://yuxingShoping99c778fc6b051ec0afdb723613465051",
"https://yuxingShoping72bf817ae95662e58f8d73b8cf06b76e"
],
"productImgLinks": [
"https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287188_1000.jpg",
"https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287206_1000.jpg",
"https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287189_1000.jpg",
"https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287204_1000.jpg",
"https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287192_1000.jpg",
"https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287200_1000.jpg"
],
"productMainUrl": "https://yuxingShoping517d4465ee74b5ca8d3805592b1c71fd",
"productName": "WARDROBE.NYC Contour 双排扣西装夹克",
"productRetailPrice": "16447.0",
"productUrl": "https://www.farfetch.cn/cn/shopping/women/wardrobenyc-contour-item-19404158.aspx",
"region": "美国",
"releaseDate": "",
"size": [
[
{
"sizeList": [
"XXXS",
"XXS",
"XS",
"S",
"M",
"L",
"XL",
"XXL",
"XXXL",
"4XL",
"5XL",
"6XL",
"7XL"
],
"sizeStandardName": "服装标准尺码"
},
{
"sizeList": [
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60"
],
"sizeStandardName": "意大利"
},
{
"sizeList": [
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56"
],
"sizeStandardName": "法国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "英国尺码"
},
{
"sizeList": [
"0",
"2",
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24"
],
"sizeStandardName": "美国尺码"
},
{
"sizeList": [
"30",
"32",
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54"
],
"sizeStandardName": "德国/丹麦"
},
{
"sizeList": [
"XPP",
"PP",
"P",
"M",
"M",
"G",
"G",
"GG",
"GG",
"XGG",
"XGG",
"XGG",
"XGG"
],
"sizeStandardName": "巴西尺码 P-M-G"
},
{
"sizeList": [
"34",
"36",
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58"
],
"sizeStandardName": "巴西"
},
{
"sizeList": [
"3",
"5",
"7",
"9",
"11",
"13",
"15",
"17",
"19",
"21",
"23",
"25",
"27"
],
"sizeStandardName": "日本尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"
],
"sizeStandardName": "标准尺码"
},
{
"sizeList": [
"000",
"00",
"0",
"I",
"II",
"III",
"IV",
"V",
"VI",
"VII",
"VIII",
"IX",
"X"
],
"sizeStandardName": "罗马数字"
},
{
"sizeList": [
"38",
"40",
"42",
"44",
"46",
"48",
"50",
"52",
"54",
"56",
"58",
"60",
"62"
],
"sizeStandardName": "俄罗斯尺码"
},
{
"sizeList": [
null,
"33",
"44",
"55",
"66",
"77",
"88",
"99",
null,
null,
null,
null,
null
],
"sizeStandardName": "韩国"
},
{
"sizeList": [
"145/73A",
"150/76A",
"155/80A",
"160/84A",
"165/88A",
"170/92A",
"175/96A",
"180/100A",
"185/104A",
null,
null,
null,
null
],
"sizeStandardName": "中国"
},
{
"sizeList": [
"4",
"6",
"8",
"10",
"12",
"14",
"16",
"18",
"20",
"22",
"24",
"26",
"28"
],
"sizeStandardName": "澳大利亚尺码"
}
]
],
"skuId": "",
"spuId": "19404158",
"style": "",
"targetPopulation": ""
}
}
解析sql方法
这里解析后你会发现还是一个list,如果要对size_list尺码进行进一步获取,需要再进行炸裂操作
SELECT
get_JSON_object(column_JSON,'$.data.size[0][0].sizeStandardName') as size_standard_name
,get_JSON_object(column_JSON,'$.data.size[0][0].sizeList') as size_list
FROM
(
select '{"collectId":"farfetchcn_4bc68f664f1a03d79366a7c667993627_20240305191718","collectTime":"20240305191718","data":{"attributes":"","brandName":"WARDROBE.NYC","category":"女士首页/WARDROBE.NYC/服装/西装夹克","color":"中性色","country":"","currency":"CNY","dataSource":"farfetch-cn","discountedPrice":"16447.0","itemNumber":"W4043R12","material":"表面: 羊毛,衬里: 粘胶纤维","newProductImgLinks":["https://yuxingShoping517d4465ee74b5ca8d3805592b1c71fd","https://yuxingShoping1f8c975d69dfc306677002f4478c3bfb","https://yuxingShopingad3be11e6ec6a2edc3d9229951c522eb","https://yuxingShoping5bef91b8aa001506eb3400464db51e8f","https://yuxingShoping99c778fc6b051ec0afdb723613465051","https://yuxingShoping72bf817ae95662e58f8d73b8cf06b76e"],"productImgLinks":["https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287188_1000.jpg","https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287206_1000.jpg","https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287189_1000.jpg","https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287204_1000.jpg","https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287192_1000.jpg","https://cdn-images.farfetch-contents.com/19/40/41/58/19404158_50287200_1000.jpg"],"productMainUrl":"https://yuxingShoping517d4465ee74b5ca8d3805592b1c71fd","productName":"WARDROBE.NYC Contour 双排扣西装夹克","productRetailPrice":"16447.0","productUrl":"https://www.farfetch.cn/cn/shopping/women/wardrobenyc-contour-item-19404158.aspx","region":"美国","releaseDate":"","size":[[{"sizeList":["XXXS","XXS","XS","S","M","L","XL","XXL","XXXL","4XL","5XL","6XL","7XL"],"sizeStandardName":"服装标准尺码"},{"sizeList":["36","38","40","42","44","46","48","50","52","54","56","58","60"],"sizeStandardName":"意大利"},{"sizeList":["32","34","36","38","40","42","44","46","48","50","52","54","56"],"sizeStandardName":"法国"},{"sizeList":["4","6","8","10","12","14","16","18","20","22","24","26","28"],"sizeStandardName":"英国尺码"},{"sizeList":["0","2","4","6","8","10","12","14","16","18","20","22","24"],"sizeStandardName":"美国尺码"},{"sizeList":["30","32","34","36","38","40","42","44","46","48","50","52","54"],"sizeStandardName":"德国/丹麦"},{"sizeList":["XPP","PP","P","M","M","G","G","GG","GG","XGG","XGG","XGG","XGG"],"sizeStandardName":"巴西尺码 P-M-G"},{"sizeList":["34","36","38","40","42","44","46","48","50","52","54","56","58"],"sizeStandardName":"巴西"},{"sizeList":["3","5","7","9","11","13","15","17","19","21","23","25","27"],"sizeStandardName":"日本尺码"},{"sizeList":["000","00","0","1","2","3","4","5","6","7","8","9","10"],"sizeStandardName":"标准尺码"},{"sizeList":["000","00","0","I","II","III","IV","V","VI","VII","VIII","IX","X"],"sizeStandardName":"罗马数字"},{"sizeList":["38","40","42","44","46","48","50","52","54","56","58","60","62"],"sizeStandardName":"俄罗斯尺码"},{"sizeList":[null,"33","44","55","66","77","88","99",null,null,null,null,null],"sizeStandardName":"韩国"},{"sizeList":["145/73A","150/76A","155/80A","160/84A","165/88A","170/92A","175/96A","180/100A","185/104A",null,null,null,null],"sizeStandardName":"中国"},{"sizeList":["4","6","8","10","12","14","16","18","20","22","24","26","28"],"sizeStandardName":"澳大利亚尺码"}]],"skuId":"","spuId":"19404158","style":"","targetPopulation":""}}' as column_JSON
)

6.单List解析
样例数据
[ 0:"http://yuxingShopping2Fks_live%2Fbbfc766bb259d6ebdc5fedc60a017967.jpg" 1:"http://yuxingShopping2Fks_live%2Fd1b554847c9606178a028a84285637c7.jpg" 2:"http://yuxingShopping2Fks_live%2F0c4a74495b1de720b9a918d04c6dab72.jpg" 3:"http://yuxingShopping2Fks_live%2F2a73008a74433520963bdc28d35b5862.jpg" 4:"http://yuxingShopping2Fks_live%2Fe54b003a3f9eb9e88bbf667dd2f9c1fa.jpg" 5:"http://yuxingShopping2Fks_live%2F0894950d96515ab8736e467464908589.jpg" 6:"http://yuxingShopping2Fks_live%2Fd7f5937f577edaf6db1c97610642227b.jpg" 7:"http://yuxingShopping2Fks_live%2F7cdd0e285a2f4d341700174c77cb1103.jpg" ]
解析sql方法
SELECT get_json_object(column_json, '$[0]') AS yuxing_shopping_image_url FROM table;
7.JSON暴力解析办法(比较蠢不建议用)
样例数据

解析sql方法
是不是看起很蠢,但如果实在不知道咋办了就用呗

8.最正确方法(直接问AIGC产品)
这里语兴更建议大家在解析复杂JSON时使用gpt/豆包/kimi/文心一言去查(自己写还是太慢了)
第一步打开文心一言、豆包、kimi等产品这里以豆包为例
第二步直接问他
提问方式为:如何使用hive sql 解析如下json中的xx所对应的值,这里放json信息


第三步拿去验证解析对不对,不对的话继续问
#数据人的面试交流地##牛客创作赏金赛##数据人offer决赛圈怎么选##数据分析##java#