日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

竟然還能這樣高效地操作 JSON 對象!

來源: 責編: 時間:2024-05-16 09:09:53 159觀看
導讀什么是 JSON PointerJSON Pointer[1] 是一種用于定位 JSON(JavaScript Object Notation)文檔中特定值的簡單而強大的方法。它通過使用斜杠 / 分隔符來指示 JSON 對象的層級結構,以確切地標識所需值的位置。為什么使用 JS

什么是 JSON Pointer

JSON Pointer[1] 是一種用于定位 JSON(JavaScript Object Notation)文檔中特定值的簡單而強大的方法。它通過使用斜杠 / 分隔符來指示 JSON 對象的層級結構,以確切地標識所需值的位置。dZA28資訊網——每日最新資訊28at.com

為什么使用 JSON Pointer

當處理大型或復雜的 JSON 數據結構時,定位特定值可能會變得非常麻煩。使用 JSON Pointer 可以讓你以一種簡單而準確的方式指定所需值的位置,而不需要編寫復雜的代碼來遍歷整個 JSON 結構。這極大地簡化了 JSON 數據的定位和操作過程。dZA28資訊網——每日最新資訊28at.com

此外,JSON Pointer 還具有以下優點:dZA28資訊網——每日最新資訊28at.com

  • 通用性:JSON Pointer 是一種通用的標準,因此可以在各種編程語言和平臺上使用。這種通用性使得 JSON Pointer 成為跨平臺開發和數據交換的理想選擇。
  • 效率:由于 JSON Pointer 可以直接定位到所需值,因此它在處理大型 JSON 數據時效率很高。相比于傳統的逐層遍歷搜索方式,JSON Pointer 能夠更快速地找到目標值。
  • 簡單易懂:JSON Pointer 使用類似文件路徑的語法,因此非常直觀和易于理解。它的語法簡潔清晰,使得使用者可以輕松地理解和使用它。
  • 精確定位:JSON Pointer 允許你以非常準確的方式指定 JSON 對象中的值,而無需關心其周圍的結構。這意味著你可以專注于所需值的確切位置,而不必擔心其他內容。

如何使用 JSON Pointer

很多常見的開發語言,都實現了 JSON Pointer 規范。在 Node.js 環境,我們可以使用 jsonpointer[2] 這個庫。dZA28資訊網——每日最新資訊28at.com

首先,使用 npm 或 pnpm 來安裝 jsonpointer:dZA28資訊網——每日最新資訊28at.com

npm install jsonpointeror pnpm add jsonpointer

成功安裝 jsonpointer 庫之后,我們就可以利用它提供的 API 來快速的定位和操作 JSON 對象。dZA28資訊網——每日最新資訊28at.com

1.獲取指定路徑的屬性值

JSON Pointer 使用斜杠 / 分隔符來指示 JSON 對象的層級結構,如果指定的路徑不存在,則會返回 undefined。dZA28資訊網——每日最新資訊28at.com

const jsonpointer = require("jsonpointer");let obj = {  foo: 1,  bar: { baz: 2 },  qux: [3, 4, 5],  zoo: {    e: [{ a: 3 }, { b: 4 }, { c: 5 }],  },};jsonpointer.get(obj, "/foo"); // returns 1jsonpointer.get(obj, "/bar/baz"); // returns 2jsonpointer.get(obj, "/quo"); // returns undefined

2.獲取數組對象指定位置的值

若要訪問指定位置的數組元素,則需要在 / 分隔符后面添加該元素的索引。dZA28資訊網——每日最新資訊28at.com

jsonpointer.get(obj, "/qux/0"); // returns 3jsonpointer.get(obj, "/qux/1"); // returns 4jsonpointer.get(obj, "/qux/2"); // returns 5

如果數組元素也是對象的話,我們只需按照屬性的層級結構進行訪問路徑即可。dZA28資訊網——每日最新資訊28at.com

jsonpointer.get(obj, "/zoo/e/0/a"); // returns 3jsonpointer.get(obj, "/zoo/e/1/b"); // returns 4jsonpointer.get(obj, "/zoo/e/2/c"); // returns 5

除了,獲取 JSON 對象的值之外,通過使用 jsonpointer 這個庫提供的 set 方法,我們也可以設置指定路徑的值。dZA28資訊網——每日最新資訊28at.com

3.設置指定路徑的屬性值

JSON Pointer 提供了一種往數組中插入新元素的便捷語法,即在 / 路徑后添加 - 符號:dZA28資訊網——每日最新資訊28at.com

// sets obj.foo = 6;jsonpointer.set(obj, "/foo", 6); // sets obj.qux = [3, 4, 5, 6]jsonpointer.set(obj, "/qux/-", 6); // set zoo.e = [{"a":3},{"b":4},{"c":5},{"d":6}]jsonpointer.set(obj, "/zoo/e/-", { d: 6 });

除了上面介紹的 set 和 get 方法之外,jsonpointer 這個庫還提供了一個 compile 方法,該方法會返回一個新的 JSON Pointer 對象,讓我們更方便地訪問 JSON 對象特定路徑的屬性。dZA28資訊網——每日最新資訊28at.com

const pointer = jsonpointer.compile("/foo");pointer.get(obj); // returns 6pointer.set(obj, 1); // sets obj.foo = 1

JSON Pointer 在 LangchainJS 中的應用

在 LangchainJS 的 JSONLoader[3] 中,也用到了 jsonpointer 這個庫。使用該庫的主要目的是為了能快速從 JSON 對象中,提取用戶想要的數據。dZA28資訊網——每日最新資訊28at.com

使用示例

example.jsondZA28資訊網——每日最新資訊28at.com

{  "1": {    "body": "BD 2023 SUMMER",    "from": "LinkedIn Job",    "labels": ["IMPORTANT", "CATEGORY_UPDATES", "INBOX"]  },  "2": {    "body": "Intern, Treasury and other roles are available",    "from": "LinkedIn Job2",    "labels": ["IMPORTANT"],    "other": {      "name": "plop",      "surname": "bob"    }  }}

JSONLoaderdZA28資訊網——每日最新資訊28at.com

export declare class JSONLoader extends TextLoader {    pointers: string[];    constructor(filePathOrBlob: string | Blob, pointers?: string | string[]);}

假設我們只想要提取 from 和 surname 的信息:dZA28資訊網——每日最新資訊28at.com

import { JSONLoader } from "langchain/document_loaders/fs/json";const loader = new JSONLoader(  "src/document_loaders/example_data/example.json",  ["/from", "/surname"]);const docs = await loader.load();

通過設置 pointers 參數的值為 ["/from", "/surname"],我們就實現了快速提取 JSON 對象中想要的數據。dZA28資訊網——每日最新資訊28at.com

[  Document {    pageContent: 'LinkedIn Job',    metadata: { source: './src/json/example.json', line: 1 }  },  Document {    pageContent: 'LinkedIn Job2',    metadata: { source: './src/json/example.json', line: 2 }  },  Document {    pageContent: 'bob',    metadata: { source: './src/json/example.json', line: 3 }  }]

參考資料

[1]JSON Pointer: https://datatracker.ietf.org/doc/html/rfc6901dZA28資訊網——每日最新資訊28at.com

[2]jsonpointer: https://www.npmjs.com/package/jsonpointerdZA28資訊網——每日最新資訊28at.com

[3]JSONLoader: https://js.langchain.com/docs/modules/data_connection/document_loaders/jsondZA28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-88384-0.html竟然還能這樣高效地操作 JSON 對象!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 分布式延時消息的另外一種選擇 Redisson

下一篇: C#中的“_ =”操作符:丟棄不需要的變量

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 沅陵县| 新昌县| 恩平市| 葵青区| 垣曲县| 阿荣旗| 余庆县| 衡南县| 延吉市| 留坝县| 万载县| 正宁县| 伊川县| 桑日县| 牙克石市| 虞城县| 商南县| 依兰县| 高青县| 台前县| 临颍县| 朝阳县| 阜南县| 商丘市| 肥西县| 凤台县| 阿克苏市| 满洲里市| 丘北县| 沐川县| 吴川市| 乌兰察布市| 阳信县| 湖口县| 吉林省| 安义县| 长沙市| 彩票| 汝城县| 开鲁县| 阳东县|