This is a translation of the original English documentation page. Help us make it better.

3 פונקציונליות JSONPath

סקירה כללית

סעיף זה מספק פרטים על הפונקציונליות הנתמכת של JSONPath ב שלבי עיבוד מקדים של ערך פריט.

JSONPath מורכב מקטעים המופרדים באמצעות נקודות. קטע יכול להיות או מילה פשוטה כמו שם ערך JSON, * או מורכבת יותר מבנה מוקף בתוך סוגריים מרובעים [ ]. הנקודה המפרידה קטע לפני סוגר הוא אופציונלי וניתן להשמיט אותו. לדוגמה:

נתיב תיאור
$.object.name החזר את תוכן object.name.
$.object['name'] החזר את תוכן object.name.
$.object.['name'] החזר את תוכן object.name.
$["object"]['name'] החזר את התוכן של object.name.
$.['object'].["name"] החזר את תוכן object.name.
$.object.history.length() החזר את מספר רכיבי מערך object.history.
$[?(@.name == 'Object')].price.first() החזר את שדה המחיר של האובייקט הראשון עם השם 'Object'.
$[?(@.name == 'Object')].history.first().length() החזר את מספר רכיבי מערך ההיסטוריה של האובייקט הראשון עם השם 'Object'.
$[?(@.price > 10)].length() החזר את מספר האובייקטים כאשר המחיר גדול מ-10.

ראה גם: בריחה של תווים מיוחדים מערכי מאקרו LLD ב JSONPath.

פלחים נתמכים

פלח תיאור
<name> התאם מאפיין אובייקט לפי שם.
* התאם את כל מאפייני האובייקט.
['<name>'] התאם את מאפיין האובייקט לפי שם.
['<name>', '<name>', ...] התאם את מאפיין האובייקט לפי כל אחד מהשמות הרשומים.
[<index>] התאם את רכיב המערך לפי האינדקס.
[<number>, <number>, ...] התאם את רכיב המערך לפי כל אחד מהאינדקסים הרשומים.
[*] תאם את כל מאפייני האובייקט או רכיבי המערך.
[<start>:<end>] התאם רכיבי מערך לפי הטווח המוגדר:
<start> - האינדקס הראשון שתתאים (כולל). אם לא צוין תואם את כל רכיבי המערך מההתחלה. אם שלילי מציין התחלה של היסט מסוף המערך.
<end> - האינדקס האחרון להתאים (לא כולל). אם לא צוין תואם את כל רכיבי המערך עד הסוף. אם שלילי מציין התחלה של היסט מסוף המערך.
[?(<expression>)] התאם אובייקטים/רכיבי מערך על ידי החלת ביטוי מסנן.

כדי למצוא קטע תואם תוך התעלמות מהמוצא שלו (קטע מנותק) זה חייב להיות קידומת '..' , לדוגמה $..name או $..['name'] החזר ערכים של כל מאפייני 'שם'.

ניתן לחלץ שמות אלמנטים תואמים על ידי הוספת סיומת ~ ל- JSONPath. הוא מחזיר את שם האובייקט המותאם או אינדקס ב פורמט מחרוזת של פריט המערך המותאם. פורמט הפלט עוקב אחר ה אותם כללים כמו שאילתות JSONPath אחרות - תוצאות נתיב מוגדרות הן החזירו 'as is' ותוצאות נתיב בלתי מוגדר מוחזרות במערך. עם זאת, אין טעם לחלץ את השם של אלמנט התאמת נתיב מוגדר - זה כבר ידוע.

ביטוי מסנן

ביטוי המסנן הוא ביטוי אריתמטי בסימון אינפיקס.

אופרנדים נתמכים:

אופרנד תיאור דוגמה
"<text>"
'<text>'
קבוע טקסט. 'value: \'1\''
"value: '1'"
<number> קבוע מספרי התומך בסימון מדעי. 123
<jsonpath שמתחיל ב-$> ערך שאליו מתייחס ה-JSONPath מצומת השורש של מסמך הקלט; רק נתיבים מוגדרים נתמכים. $.object.name
<jsonpath שמתחיל ב-@> ערך שאליו מתייחס ה-JSONPath מהאובייקט/אלמנט הנוכחי; רק נתיבים מוגדרים נתמכים. @.name

מפעילים נתמכים:

מפעיל סוג תיאור תוצאה
- בינארי חיסור. מספר.
+ בינארי הוספה. מספר.
/ בינארי חטיבה. מספר.
* בינארי כפל. מספר.
== בינארי שווה ל. בוליאני (1 או 0).
!= בינארי אינו שווה ל. בוליאנית (1 או 0).
< בינארי הוא פחות מ. בוליאני (1 או 0).
<= בינארי קטן או שווה ל. בוליאנית (1 או 0).
> בינארי הוא גדול מ. בוליאני (1 או 0).
>= בינארי גדול או שווה ל. בוליאנית (1 או 0).
=~ בינארי מתאים לביטוי רגולרי. בוליאני (1 או 0).
! אונרי בוליאני לא. בוליאני (1 או 0).
|| בינארי בוליאני או. בוליאני (1 או 0).
&& בינארי בוליאני ו. בוליאני (1 או 0).

פונקציות

ניתן להשתמש בפונקציות בסוף JSONPath. יכולות להיות מספר פונקציות משורשר אם הפונקציה הקודמת מחזירה ערך שמתקבל על ידי ה- הפונקציה הבאה.

פונקציות נתמכות:

פונקציה תיאור קלט פלט
avg ערך ממוצע של מספרים במערך קלט. מערך של מספרים. מספר.
min ערך מינימלי של מספרים במערך קלט. מערך של מספרים. מספר.
max ערך מקסימלי של מספרים במערך קלט. מערך של מספרים. מספר.
sum סכום של מספרים במערך קלט. מערך של מספרים. מספר.
length מספר אלמנטים במערך קלט. מערך. מספר.
first אלמנט המערך הראשון. מערך. מבנה JSON (אובייקט, מערך, ערך) בהתאם לתוכן מערך הקלט.

ערכים מספריים במרכאות מקובלים על ידי פונקציות הצבירה של JSONPath. זה אומר שהערכים מומרים מסוג מחרוזת למספרי if נדרשת צבירה.

קלט לא תואם יגרום לפונקציה ליצור שגיאה.

ערך פלט

JSONPaths ניתן לחלק בנתיבים מוגדרים ובלתי מוגדרים. מובהק נתיב יכול להחזיר רק null או התאמה בודדת. דרך בלתי מוגבלת יכולה החזר מספר התאמות, בעצם JSONPaths עם מנותק, מרובה רשימת שם/אינדקס, פרוסת מערך או קטעי ביטוי. אולם, כאשר א בשימוש בפונקציה ה-JSONPath הופך להיות מוגדר, כמו פונקציות תמיד פלט ערך בודד.

נתיב מוגדר מחזיר את האובייקט/מערך/ערך שאליו הוא מפנה, בעוד נתיב בלתי מוגדר מחזיר מערך של האובייקטים/המערכים/ערכים התואמים.

רווח לבן

ניתן להשתמש ברווח לבן (רווח, תווי טאב) באופן חופשי בסוגריים מקטעי סימון וביטויים, למשל, $[ 'a' ][ 0 ][ ?( $.b == 'c' ) ][ : -1 ].first( ).

מחרוזות

יש לכלול מחרוזות במרכאות בודדות או כפולות. בתוך ה מחרוזות, מרכאות בודדות או כפולות (בהתאם לאלו משמשים להקיף it) והלוכסים האחוריים \ נמלטים עם תו \.

דוגמאות

מחרוזות

יש לכלול מחרוזות במרכאות בודדות או כפולות. בתוך ה מחרוזות, מרכאות בודדות או כפולות (בהתאם לאלו משמשים להקיף it) והלוכסים האחוריים \ נמלטים עם תו \.