詳解JsonPath語法

一、JsonPath語法概述

JsonPath是一種表示Json文檔中特定部分的語法。它可以幫助用戶通過類似於XPath的表達式來篩選和提取Json對象的數據。

JsonPath標準由一個或多個路徑表達式組成。每個路徑表達式從根節點開始,描述了以下內容:

  1. 查找Json文檔中一個或多個節點
  2. 訪問指定的Json節點的屬性、數組和子對象

以下是一個例子:

{
    "name": "John",
    "age": 30,
    "cars": [
        { "name": "Ford", "models": ["Fiesta", "Focus", "Mustang"] },
        { "name": "BMW", "models": ["320", "X3", "X5"] },
        { "name": "Fiat", "models": ["500", "Panda"] }
    ]
}

使用JsonPath可以選擇如下內容:

  • 所有「name」字段:$..name
  • 所有「models」字段:$..models
  • BWM的所有「models」字段:$..[?(@.name==’BMW’)].models

二、Json語法

在JsonPath的路徑表達式中,需要有一定的Json語法基礎。JSON(JavaScript Object Notation,JavaScript對象表示法)是一種輕量級的數據交換格式,易於閱讀和編寫。

JSON的數據結構包括:

  • 對象:由花括號包裹的鍵值對集合
  • 數組:由方括號包裹的值的有序集合
  • 值:字符串、數字、布爾值、null、另一個對象或數組

以下是一個JSON對象的例子:

{
    "name":"John",
    "age":30,
    "city":"New York"
}

三、JsonPath過濾器

JsonPath語法中能夠通過方括號和一系列過濾器對Json中的值進行篩選。以下是一些常用的JsonPath過濾器:

  • $:表示根節點
  • /:表示選取根節點下的子節點
  • *:匹配任何節點
  • @:表示當前節點
  • ..:向下遞歸匹配所有節點
  • []:表示篩選的條件

以下是一個根據條件篩選的例子:

{
    "store":{
        "book":[
            { "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
        }
    }
}

以下的JsonPath會返回category是fiction的book的title和price:

$.store.book[?(@.category == 'fiction')].['title', 'price']

四、JsonPath的用法

JsonPath的用法通常分成兩種場景:

  • JsonPath的查詢:根據路徑表達式查找指定數據,通常用於測試或數據分析。
  • JsonPath的使用:對Json文檔應用更新/刪除操作,通常在RESTful API或其他Web服務開發中使用。

以下是一個使用JsonPath查詢的Python腳本例子:

import json
import requests
from jsonpath_ng import parse

url = 'https://jsonplaceholder.typicode.com/users'

response = requests.get(url).text
data = json.loads(response)

for user in data:
    name = parse('$..name').find(user)
    email = parse('$..email').find(user)
    print(name[0].value, email[0].value)

五、Json parse方法

Json parse方法是一種將Json字符串轉換為對象或數組的方法,通常在處理Web API響應數據時使用。

以下是一個在JavaScript中使用JSON.parse()方法的例子:

let jsonString = '{"name":"John","age":30,"city":"New York"}';
let obj = JSON.parse(jsonString);
console.log(obj.name);

六、Python的Json用法

Python包含了一個內置的JSON模塊,用於在Python中讀寫JSON數據。

以下是一個使用Python操作JSON的例子:

import json

user = {'name': 'John', 'age': 30, 'city': 'New York'}
json_string = json.dumps(user)
print(json_string)

七、Json的語法規範

雖然JSON本身沒有正式的語法規範,但很多編程語言,包括JavaScript和Python,都實現了自己的JSON解析器。

以下是一些JSON語法規則的概述:

  • JSON對象使用花括號包裹,並由逗號分隔的鍵值對組成。
  • 鍵必須是字符串,值可以是字符串、數字、布爾型、null、數組或另一個JSON對象。
  • 鍵和字符串值必須由雙引號包裹。
  • JSON數組使用方括號包裹,並由逗號分隔的值組成。
  • 值可以是字符串、數字、布爾型、null、數組或另一個JSON對象。

以下是一個JSON對象的例子:

{
    "name":"John",
    "age":30,
    "city":"New York"
}

八、總結

本文介紹了JsonPath語法及其相關知識。通過路徑表達式,JsonPath可以快速篩選和提取Json文檔中的數據,幫助用戶在Web API和其他應用中處理JSON。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/286045.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 16:07
下一篇 2024-12-22 16:07

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Python語法大全解析

    本文旨在全面闡述Python語法,並提供相關代碼示例,幫助讀者更好地理解Python語言。 一、基礎語法 1、Python的注釋方式 # 這是單行注釋 “”” 這是多行注釋,可以注…

    編程 2025-04-29
  • Python中複數的語法

    本文將從多個方面對Python中複數的語法進行詳細的闡述。Python中的複數是指具有實部和虛部的數,其中實部和虛部都是浮點數。它們可以用「實數+虛數j」的形式表示。例如,3 + …

    編程 2025-04-29
  • parent.$.dialog是什麼技術的語法

    parent.$.dialog是一種基於jQuery插件的彈出式對話框技術,它提供了一個方便快捷的方式來創建各種類型和樣式的彈出式對話框。它是對於在網站開發中常見的彈窗、提示框等交…

    編程 2025-04-28
  • 編譯原理語法分析思維導圖

    本文將從以下幾個方面詳細闡述編譯原理語法分析思維導圖: 一、語法分析介紹 1.1 語法分析的定義 語法分析是編譯器中將輸入的字符流轉換成抽象語法樹的一個過程。該過程的目的是確保輸入…

    編程 2025-04-27
  • Python進階語法全面解析

    Python語言作為一種廣泛應用於人工智能、數據分析、雲計算等多個領域的編程語言,擁有廣泛的社區和強大的生態系統。Python提供了基本語法以及常用函數和模塊,用於解決大量常規編程…

    編程 2025-04-27
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25

發表回復

登錄後才能評論