JSON_EXTRACT()解析嵌套JSON:路徑符號$.[]的正確書寫格式

使用json_extract()提取嵌套json數據時,需掌握以下要點:1.路徑以$開頭,對象字段用$.字段名表示,數組元素用[索引]訪問;2.多層結構逐層展開路徑,注意點號和括號順序;3.字段名含特殊字符時需用雙引號包裹。例如提取hobbies數組第一個元素應寫為$.user.hobbies[0],處理多層嵌套時如data數組第二個對象的tags數組第二個元素寫作$.data[1].tags[1],特殊字符字段如”full name”需寫成$.user-info.”full name”或$.”user-info”.”full name”,建議通過在線工具驗證路徑準確性。

JSON_EXTRACT()解析嵌套JSON:路徑符號$.[]的正確書寫格式

有時候解析嵌套的 JSON 數據,特別是用像 mysql 的 JSON_EXTRACT() 這類函數時,路徑寫法容易搞錯。其實只要掌握幾個關鍵點,就能準確提取想要的數據。

JSON_EXTRACT()解析嵌套JSON:路徑符號$.[]的正確書寫格式


路徑表達式的基本結構:$.字段名[索引]

在使用 JSON_EXTRACT() 時,路徑是以 $ 開頭的,表示整個 JSON 的根。如果數據是對象(鍵值對),就用 $.字段名;如果是數組,就要用 [索引] 來訪問具體元素。

JSON_EXTRACT()解析嵌套JSON:路徑符號$.[]的正確書寫格式

舉個例子,假設你有如下 JSON:

{   "user": {     "name": "張三",     "hobbies": ["籃球", "讀書", "編程"]   } }

要提取 hobbies 數組里的第一個愛好,路徑應該是:

JSON_EXTRACT()解析嵌套JSON:路徑符號$.[]的正確書寫格式

SELECT JSON_EXTRACT(json_column, '$.user.hobbies[0]');

注意幾點:

  • 字段名之間用英文點號連接
  • 數組索引要用方括號包裹,且從 0 開始計數
  • 不管字段名是否帶下劃線或大小寫,都要原樣寫出來

多層數組嵌套:逐層展開寫路徑

如果遇到多層嵌套數組的情況,比如下面這個結構:

{   "data": [     {       "id": 1,       "tags": ["a", "b"]     },     {       "id": 2,       "tags": ["c", "d"]     }   ] }

想提取第二個 data 元素下的 tags 第二個標簽,路徑就是:

'$.data[1].tags[1]'

說明:

  • data[1] 是數組中的第二個對象(索引從 0 開始)
  • 再進入 .tags[1] 就是那個對象中的第二個標簽

這種時候特別要注意括號和點號的位置,順序錯了就取不到數據。


特殊字符處理:字段名含特殊符號怎么辦?

有些 JSON 中字段名可能包含空格、連字符 – 或其他非字母字符,例如:

{   "user-info": {     "full name": "李四"   } }

這時候路徑要加雙引號包裹字段名:

'$.user-info."full name"'

或者也可以統一都用引號形式:

'$."user-info"."full name"'

這樣即使字段名中包含特殊字符也不會出錯。


基本上就這些常用情況。路徑寫法雖然看起來簡單,但實際操作中很容易因為少一個點、錯一個括號導致結果為空。建議每次寫完可以先用在線 JSON 提取工具驗證一下路徑是否正確,再放到 SQL 里執行。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享