使用 JSONPath 轉換活頁簿中的 JSON 資料

活頁簿可查詢許多來源的資料。 有些端點 (例如 Azure Resource Manager 或自訂端點) 可傳回 JSON 形式的結果。 如果查詢端點傳回的 JSON 資料採用您不想要的格式,您可以使用 JSONPath 轉換將 JSON 轉換成資料表結構。 您可使用資料表後續繪製活頁簿視覺效果

JSONPath 是 JSON 的查詢語言,如同用於 XML 的 XPath。 就像 XPath 一樣,JSONPath 可讓您從 JSON 結構中擷取和篩選資料。

使用 JSONPath

在此範例中,JSON 物件代表存放區的詳細目錄。 我們會列出商店所售書籍的標題、作者和價格,以建立書籍的資料表。

  1. 選取 [編輯] 以將活頁簿切換為編輯模式。

  2. 使用 [新增]>[新增查詢] 連結,將查詢控制項新增至活頁簿。

  3. 選取資料來源 JSON

  4. 使用 JSON 編輯器輸入下列 JSON 程式碼片段:

    { "store": {
        "books": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
          "color": "red",
          "price": 19.95
        }
      }
    }
    
  5. 選取 [結果設定] 索引標籤,並將結果格式切換為 [JSON 路徑]

  6. 套用下列 JSON 路徑設定:

    • JSON 路徑資料表$.store.books。 此欄位代表資料表根目錄的路徑。 在此案例中,我們關注的是商店的書籍庫存。 資料表路徑會從 JSON 中篩選出書籍資訊。

      資料行識別碼 資料行 JSON 路徑
      標題 $.title
      作者 $.author
      價格 $.price

    資料行識別碼會是資料行標頭。 資料行 JSON 路徑欄位代表從資料表根目錄到資料行值的路徑。

  7. 選取 [執行查詢]

    Screenshot that shows editing a query item with JSON data source and JSON path result format.

使用規則運算式轉換值

您可能有一些不是標準格式的資料。 若要有效地使用該資料,您會想將該資料轉換成標準格式。

在此範例中,發行日期的格式為 YYYMMMDD。 程式碼會將此值解譯為數值,而非文字,以產生靠右對齊的數位,而不是日期。

您可以使用結果設定中的 [類型]、[RegEx Match],以及 [取代為] 欄位,將結果轉換成 true 日期。

結果設定欄位 描述
類型 可讓您明確變更 API 所傳回之值的類型。 此欄位我們通常會保持未設定,但您可以使用此欄位來強制將值設定為不同的類型。
Regex 配對 可讓您輸入規則運算式,以參與 API 所傳回的值 (或部分),而不是整個值。 此欄位通常會與 [取代為] 欄位結合。
取代為 使用此欄位來建立新的值以及規則運算式。 如果這個值是空的,則預設值為 $&,這是運算式的相符結果。 請參閱字串取代文件,以查看可用來產生其他輸出的其他值。

若要將 YYYMMDD 格式轉換成 YYYY-MM-DD 格式:

  1. 選取方格中的 [已發佈] 資料列。

  2. 在 [類型] 欄位中,選取 [日期/時間],讓資料行可在圖表中使用。

  3. 在 [Regex Match] 欄位中,使用此規則運算式:([0-9]{4})([0-9]{2})([0-9]{2})。 規則運算式:

    • 會配對四位數,接著是兩位數,最後是另一組兩位數。
    • 括弧會形成擷取群組,以在下一個步驟中使用。
  4. 在 [取代為] 中,使用此規則運算式:$1-$2-$3。 此運算式會建立一個新的字串,其中每個擷取的群組之間都有連字元,將 ”12345678” 轉換成 “1234-56-78”。

  5. 再次執行查詢。

    Screenshot that shows JSONpath converted to date-time format.

下一步